diff options
author | Christian Grothoff <christian@grothoff.org> | 2015-01-25 21:28:06 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2015-01-25 21:28:06 +0000 |
commit | 31f3749379e9e12ea0468eabaab650ca3f7a3e1f (patch) | |
tree | c4c7a64bc980124d17be2ed230104e54240f06cd /src | |
parent | 4939e6e943f7480ebc9d5c23b6cc3251e8a42286 (diff) | |
download | gnunet-31f3749379e9e12ea0468eabaab650ca3f7a3e1f.tar.gz gnunet-31f3749379e9e12ea0468eabaab650ca3f7a3e1f.zip |
fix shutdown order to destroy sessions first, fix logic failure with respect to bi-directional transports like UNIX
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/gnunet-service-transport.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index 5126dad96..b21b0c384 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c | |||
@@ -732,11 +732,15 @@ plugin_env_session_start (void *cls, | |||
732 | session, | 732 | session, |
733 | GNUNET_i2s (&address->peer), | 733 | GNUNET_i2s (&address->peer), |
734 | GST_plugins_a2s (address)); | 734 | GST_plugins_a2s (address)); |
735 | if (GNUNET_YES == | 735 | if ( (GNUNET_YES == |
736 | GNUNET_HELLO_address_check_option (address, | 736 | GNUNET_HELLO_address_check_option (address, |
737 | GNUNET_HELLO_ADDRESS_INFO_INBOUND)) | 737 | GNUNET_HELLO_ADDRESS_INFO_INBOUND)) || |
738 | (GNUNET_NO == | ||
739 | GST_ats_is_known (address, session) ) ) | ||
738 | { | 740 | { |
739 | /* inbound is always new */ | 741 | /* inbound is always new, but outbound MAY already be known, but |
742 | for example for UNIX, we have symmetric connections and thus we | ||
743 | may not know the address yet; add if necessary! */ | ||
740 | GST_ats_add_address (address, | 744 | GST_ats_add_address (address, |
741 | session, | 745 | session, |
742 | ats, | 746 | ats, |
@@ -744,7 +748,6 @@ plugin_env_session_start (void *cls, | |||
744 | } | 748 | } |
745 | else | 749 | else |
746 | { | 750 | { |
747 | /* outbound should already be known */ | ||
748 | GST_ats_new_session (address, | 751 | GST_ats_new_session (address, |
749 | session); | 752 | session); |
750 | GST_ats_update_metrics (address, | 753 | GST_ats_update_metrics (address, |
@@ -923,8 +926,8 @@ shutdown_task (void *cls, | |||
923 | const struct GNUNET_SCHEDULER_TaskContext *tc) | 926 | const struct GNUNET_SCHEDULER_TaskContext *tc) |
924 | { | 927 | { |
925 | GST_neighbours_stop (); | 928 | GST_neighbours_stop (); |
926 | GST_validation_stop (); | ||
927 | GST_plugins_unload (); | 929 | GST_plugins_unload (); |
930 | GST_validation_stop (); | ||
928 | GST_ats_done (); | 931 | GST_ats_done (); |
929 | GNUNET_ATS_scheduling_done (GST_ats); | 932 | GNUNET_ATS_scheduling_done (GST_ats); |
930 | GST_ats = NULL; | 933 | GST_ats = NULL; |