gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r21700 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r21700 - gnunet/src/transport
Date: Fri, 1 Jun 2012 16:35:15 +0200

Author: grothoff
Date: 2012-06-01 16:35:15 +0200 (Fri, 01 Jun 2012)
New Revision: 21700

Modified:
   gnunet/src/transport/plugin_transport_tcp.c
Log:
-trying to make issues such as #2389 less likely, but I doubt this fixes it

Modified: gnunet/src/transport/plugin_transport_tcp.c
===================================================================
--- gnunet/src/transport/plugin_transport_tcp.c 2012-06-01 14:18:40 UTC (rev 
21699)
+++ gnunet/src/transport/plugin_transport_tcp.c 2012-06-01 14:35:15 UTC (rev 
21700)
@@ -1694,20 +1694,20 @@
     session->nat_connection_timeout = GNUNET_SCHEDULER_NO_TASK;
   }
 
-  GNUNET_assert (GNUNET_CONTAINER_multihashmap_remove
-                 (plugin->nat_wait_conns,
-                  &tcp_nat_probe->clientIdentity.hashPubKey,
-                  session) == GNUNET_YES);
   if (GNUNET_OK != GNUNET_SERVER_client_get_address (client, &vaddr, &alen))
   {
     GNUNET_break (0);
-    GNUNET_free (session);
-    GNUNET_SERVER_receive_done (client, GNUNET_OK);
+    GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+    disconnect_session (session);
     return;
   }
-
-  GNUNET_SERVER_client_keep (client);
-  session->client = client;
+  GNUNET_assert (GNUNET_CONTAINER_multihashmap_remove
+                 (plugin->nat_wait_conns,
+                  &tcp_nat_probe->clientIdentity.hashPubKey,
+                  session) == GNUNET_YES);
+  GNUNET_CONTAINER_multihashmap_put(plugin->sessionmap,
+                                   &session->target.hashPubKey, session, 
+                                   
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);  
   session->last_activity = GNUNET_TIME_absolute_get ();
   session->inbound = GNUNET_NO;
   LOG (GNUNET_ERROR_TYPE_DEBUG, 
@@ -1736,15 +1736,14 @@
     LOG (GNUNET_ERROR_TYPE_DEBUG, 
         "Bad address for incoming connection!\n");
     GNUNET_free (vaddr);
-
     GNUNET_SERVER_client_drop (client);
-    GNUNET_free (session);
     GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+    disconnect_session (session);
     return;
   }
   GNUNET_free (vaddr);
-
-  GNUNET_CONTAINER_multihashmap_put(plugin->sessionmap, 
&session->target.hashPubKey, session, 
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
+  GNUNET_SERVER_client_keep (client);
+  session->client = client;
   inc_sessions (plugin, session, __LINE__);
   GNUNET_STATISTICS_update (plugin->env->stats,
                             gettext_noop ("# TCP sessions active"), 1,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]