diff options
Diffstat (limited to 'src/transport/plugin_transport_udp.c')
-rw-r--r-- | src/transport/plugin_transport_udp.c | 33 |
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; |