aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_udp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/plugin_transport_udp.c')
-rw-r--r--src/transport/plugin_transport_udp.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/transport/plugin_transport_udp.c b/src/transport/plugin_transport_udp.c
index 76c9dfdec..5b882af26 100644
--- a/src/transport/plugin_transport_udp.c
+++ b/src/transport/plugin_transport_udp.c
@@ -1327,10 +1327,13 @@ udp_disconnect_session (void *cls,
1327 struct UDP_MessageWrapper *next; 1327 struct UDP_MessageWrapper *next;
1328 struct FindReceiveContext frc; 1328 struct FindReceiveContext frc;
1329 1329
1330 GNUNET_assert(GNUNET_YES != s->in_destroy); 1330 GNUNET_assert (GNUNET_YES != s->in_destroy);
1331 LOG(GNUNET_ERROR_TYPE_DEBUG, "Session %p to peer `%s' address ended\n", s, 1331 LOG(GNUNET_ERROR_TYPE_DEBUG,
1332 "Session %p to peer `%s' address ended\n", s,
1332 GNUNET_i2s (&s->target), 1333 GNUNET_i2s (&s->target),
1333 udp_address_to_string (NULL, s->address->address, s->address->address_length)); 1334 udp_address_to_string (NULL,
1335 s->address->address,
1336 s->address->address_length));
1334 /* stop timeout task */ 1337 /* stop timeout task */
1335 if (NULL != s->timeout_task) 1338 if (NULL != s->timeout_task)
1336 { 1339 {
@@ -1405,10 +1408,10 @@ udp_disconnect_session (void *cls,
1405 } 1408 }
1406 } 1409 }
1407 1410
1408 GNUNET_assert(GNUNET_YES == 1411 GNUNET_assert (GNUNET_YES ==
1409 GNUNET_CONTAINER_multipeermap_remove (plugin->sessions, 1412 GNUNET_CONTAINER_multipeermap_remove (plugin->sessions,
1410 &s->target, 1413 &s->target,
1411 s)); 1414 s));
1412 GNUNET_STATISTICS_set (plugin->env->stats, 1415 GNUNET_STATISTICS_set (plugin->env->stats,
1413 "# UDP sessions active", 1416 "# UDP sessions active",
1414 GNUNET_CONTAINER_multipeermap_size (plugin->sessions), 1417 GNUNET_CONTAINER_multipeermap_size (plugin->sessions),
@@ -2335,7 +2338,8 @@ process_udp_message (struct Plugin *plugin,
2335 address = GNUNET_HELLO_address_allocate ( &msg->sender, PLUGIN_NAME, 2338 address = GNUNET_HELLO_address_allocate ( &msg->sender, PLUGIN_NAME,
2336 arg, args, 2339 arg, args,
2337 GNUNET_HELLO_ADDRESS_INFO_INBOUND); 2340 GNUNET_HELLO_ADDRESS_INFO_INBOUND);
2338 if (NULL == (s = udp_plugin_lookup_session (plugin, address))) 2341 if ( (NULL == (s = udp_plugin_lookup_session (plugin, address))) &&
2342 (GNUNET_YES != s->in_destroy) )
2339 { 2343 {
2340 s = udp_plugin_create_session (plugin, address); 2344 s = udp_plugin_create_session (plugin, address);
2341 plugin->env->session_start (NULL, address, s, NULL, 0); 2345 plugin->env->session_start (NULL, address, s, NULL, 0);
@@ -2354,9 +2358,12 @@ process_udp_message (struct Plugin *plugin,
2354 si.arg = arg; 2358 si.arg = arg;
2355 si.args = args; 2359 si.args = args;
2356 s->rc++; 2360 s->rc++;
2357 GNUNET_SERVER_mst_receive (plugin->mst, &si, (const char *) &msg[1], 2361 GNUNET_SERVER_mst_receive (plugin->mst,
2358 ntohs (msg->header.size) - sizeof(struct UDPMessage), GNUNET_YES, 2362 &si,
2359 GNUNET_NO); 2363 (const char *) &msg[1],
2364 ntohs (msg->header.size) - sizeof(struct UDPMessage),
2365 GNUNET_YES,
2366 GNUNET_NO);
2360 s->rc--; 2367 s->rc--;
2361 if ((0 == s->rc) && (GNUNET_YES == s->in_destroy)) 2368 if ((0 == s->rc) && (GNUNET_YES == s->in_destroy))
2362 free_session (s); 2369 free_session (s);
@@ -3614,12 +3621,12 @@ libgnunet_plugin_transport_udp_done (void *cls)
3614 return NULL; 3621 return NULL;
3615 } 3622 }
3616 stop_broadcast (plugin); 3623 stop_broadcast (plugin);
3617 if (plugin->select_task != NULL ) 3624 if (plugin->select_task != NULL)
3618 { 3625 {
3619 GNUNET_SCHEDULER_cancel (plugin->select_task); 3626 GNUNET_SCHEDULER_cancel (plugin->select_task);
3620 plugin->select_task = NULL; 3627 plugin->select_task = NULL;
3621 } 3628 }
3622 if (plugin->select_task_v6 != NULL ) 3629 if (plugin->select_task_v6 != NULL)
3623 { 3630 {
3624 GNUNET_SCHEDULER_cancel (plugin->select_task_v6); 3631 GNUNET_SCHEDULER_cancel (plugin->select_task_v6);
3625 plugin->select_task_v6 = NULL; 3632 plugin->select_task_v6 = NULL;