From: Christian Grothoff Date: Fri, 1 Jun 2012 14:35:15 +0000 (+0000) Subject: -trying to make issues such as #2389 less likely, but I doubt this fixes it X-Git-Tag: initial-import-from-subversion-38251~13298 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=1f36ef73e4b6516832ffb40f11be0d2cacb3e0fe;p=oweals%2Fgnunet.git -trying to make issues such as #2389 less likely, but I doubt this fixes it --- diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c index a527585cc..88950ea79 100644 --- a/src/transport/plugin_transport_tcp.c +++ b/src/transport/plugin_transport_tcp.c @@ -1694,20 +1694,20 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client, 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 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client, 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,