aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2015-01-25 21:28:06 +0000
committerChristian Grothoff <christian@grothoff.org>2015-01-25 21:28:06 +0000
commit31f3749379e9e12ea0468eabaab650ca3f7a3e1f (patch)
treec4c7a64bc980124d17be2ed230104e54240f06cd /src/transport/gnunet-service-transport.c
parent4939e6e943f7480ebc9d5c23b6cc3251e8a42286 (diff)
downloadgnunet-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/transport/gnunet-service-transport.c')
-rw-r--r--src/transport/gnunet-service-transport.c15
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;