diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-12-11 22:50:10 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-12-11 22:50:10 +0000 |
commit | 9dbf3b587010260ad2e26450a86a37ecd298df11 (patch) | |
tree | b475c461b0dd6906f885b9992a98e13cec5f36d2 /src/transport/plugin_transport_tcp.c | |
parent | 6f5773151141852cdb07a14edb2d5974d89814c2 (diff) | |
download | gnunet-9dbf3b587010260ad2e26450a86a37ecd298df11.tar.gz gnunet-9dbf3b587010260ad2e26450a86a37ecd298df11.zip |
-more logging, etc.
Diffstat (limited to 'src/transport/plugin_transport_tcp.c')
-rw-r--r-- | src/transport/plugin_transport_tcp.c | 217 |
1 files changed, 120 insertions, 97 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c index 113cb70c5..273d39873 100644 --- a/src/transport/plugin_transport_tcp.c +++ b/src/transport/plugin_transport_tcp.c | |||
@@ -139,10 +139,10 @@ GNUNET_NETWORK_STRUCT_BEGIN | |||
139 | */ | 139 | */ |
140 | struct IPv4TcpAddress | 140 | struct IPv4TcpAddress |
141 | { | 141 | { |
142 | /** | 142 | /** |
143 | * Optional options and flags for this address | 143 | * Optional options and flags for this address |
144 | */ | 144 | */ |
145 | uint32_t options; | 145 | uint32_t options; |
146 | 146 | ||
147 | /** | 147 | /** |
148 | * IPv4 address, in network byte order. | 148 | * IPv4 address, in network byte order. |
@@ -162,10 +162,10 @@ struct IPv4TcpAddress | |||
162 | */ | 162 | */ |
163 | struct IPv6TcpAddress | 163 | struct IPv6TcpAddress |
164 | { | 164 | { |
165 | /** | 165 | /** |
166 | * Optional flags for this address | 166 | * Optional flags for this address |
167 | */ | 167 | */ |
168 | uint32_t options; | 168 | uint32_t options; |
169 | 169 | ||
170 | /** | 170 | /** |
171 | * IPv6 address. | 171 | * IPv6 address. |
@@ -314,12 +314,12 @@ struct Session | |||
314 | struct GNUNET_TIME_Absolute last_activity; | 314 | struct GNUNET_TIME_Absolute last_activity; |
315 | 315 | ||
316 | /** | 316 | /** |
317 | * Are we still expecting the welcome message? (GNUNET_YES/GNUNET_NO) | 317 | * Are we still expecting the welcome message? (#GNUNET_YES/#GNUNET_NO) |
318 | */ | 318 | */ |
319 | int expecting_welcome; | 319 | int expecting_welcome; |
320 | 320 | ||
321 | /** | 321 | /** |
322 | * Was this a connection that was inbound (we accepted)? (GNUNET_YES/GNUNET_NO) | 322 | * Was this a connection that was inbound (we accepted)? (#GNUNET_YES/#GNUNET_NO) |
323 | */ | 323 | */ |
324 | int inbound; | 324 | int inbound; |
325 | 325 | ||
@@ -441,6 +441,8 @@ reschedule_session_timeout (struct Session *s); | |||
441 | 441 | ||
442 | /** | 442 | /** |
443 | * Cancel timeout | 443 | * Cancel timeout |
444 | * | ||
445 | * @param s session to cancel timeout for | ||
444 | */ | 446 | */ |
445 | static void | 447 | static void |
446 | stop_session_timeout (struct Session *s); | 448 | stop_session_timeout (struct Session *s); |
@@ -458,34 +460,39 @@ static void | |||
458 | inc_sessions (struct Plugin *plugin, struct Session *session, int line) | 460 | inc_sessions (struct Plugin *plugin, struct Session *session, int line) |
459 | { | 461 | { |
460 | sessions++; | 462 | sessions++; |
461 | unsigned int size = GNUNET_CONTAINER_multipeermap_size(plugin->sessionmap); | 463 | unsigned int size = GNUNET_CONTAINER_multipeermap_size (plugin->sessionmap); |
462 | if (sessions != size) | 464 | if (sessions != size) |
463 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Inconsistent sessions %u <-> session map size: %u\n", | 465 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
464 | sessions, size); | 466 | "Inconsistent sessions %u <-> session map size: %u\n", |
465 | LOG (GNUNET_ERROR_TYPE_DEBUG, "%4i Session increased to %u (session map size: %u): `%s' `%s'\n", | 467 | sessions, size); |
466 | line, | 468 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
467 | sessions, | 469 | "%4i Session increased to %u (session map size: %u): `%s' `%s'\n", |
468 | size, | 470 | line, |
469 | GNUNET_i2s (&session->target), | 471 | sessions, |
470 | tcp_address_to_string (NULL, session->addr, session->addrlen)); | 472 | size, |
473 | GNUNET_i2s (&session->target), | ||
474 | tcp_address_to_string (NULL, session->addr, session->addrlen)); | ||
471 | } | 475 | } |
472 | 476 | ||
473 | 477 | ||
474 | static void | 478 | static void |
475 | dec_sessions (struct Plugin *plugin, struct Session *session, int line) | 479 | dec_sessions (struct Plugin *plugin, |
480 | struct Session *session, int line) | ||
476 | { | 481 | { |
477 | GNUNET_assert (sessions > 0); | 482 | GNUNET_assert (sessions > 0); |
478 | unsigned int size = GNUNET_CONTAINER_multipeermap_size(plugin->sessionmap); | 483 | unsigned int size = GNUNET_CONTAINER_multipeermap_size(plugin->sessionmap); |
479 | sessions--; | 484 | sessions--; |
480 | if (sessions != size) | 485 | if (sessions != size) |
481 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Inconsistent sessions %u <-> session map size: %u\n", | 486 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
482 | sessions, size); | 487 | "Inconsistent sessions %u <-> session map size: %u\n", |
483 | LOG (GNUNET_ERROR_TYPE_DEBUG, "%4i Session decreased to %u (session map size: %u): `%s' `%s'\n", | 488 | sessions, size); |
484 | line, | 489 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
485 | sessions, | 490 | "%4i Session decreased to %u (session map size: %u): `%s' `%s'\n", |
486 | size, | 491 | line, |
487 | GNUNET_i2s (&session->target), | 492 | sessions, |
488 | tcp_address_to_string (NULL, session->addr, session->addrlen)); | 493 | size, |
494 | GNUNET_i2s (&session->target), | ||
495 | tcp_address_to_string (NULL, session->addr, session->addrlen)); | ||
489 | } | 496 | } |
490 | /* DEBUG CODE */ | 497 | /* DEBUG CODE */ |
491 | 498 | ||
@@ -499,7 +506,7 @@ dec_sessions (struct Plugin *plugin, struct Session *session, int line) | |||
499 | * @param ucred credentials, if available, otherwise NULL | 506 | * @param ucred credentials, if available, otherwise NULL |
500 | * @param addr address | 507 | * @param addr address |
501 | * @param addrlen length of address | 508 | * @param addrlen length of address |
502 | * @return GNUNET_YES to allow, GNUNET_NO to deny, GNUNET_SYSERR | 509 | * @return #GNUNET_YES to allow, #GNUNET_NO to deny, #GNUNET_SYSERR |
503 | * for unknown address family (will be denied). | 510 | * for unknown address family (will be denied). |
504 | */ | 511 | */ |
505 | static int | 512 | static int |
@@ -522,7 +529,7 @@ plugin_tcp_access_check (void *cls, | |||
522 | * Our external IP address/port mapping has changed. | 529 | * Our external IP address/port mapping has changed. |
523 | * | 530 | * |
524 | * @param cls closure, the 'struct LocalAddrList' | 531 | * @param cls closure, the 'struct LocalAddrList' |
525 | * @param add_remove GNUNET_YES to mean the new public IP address, GNUNET_NO to mean | 532 | * @param add_remove #GNUNET_YES to mean the new public IP address, #GNUNET_NO to mean |
526 | * the previous (now invalid) one | 533 | * the previous (now invalid) one |
527 | * @param addr either the previous or the new public IP address | 534 | * @param addr either the previous or the new public IP address |
528 | * @param addrlen actual lenght of the address | 535 | * @param addrlen actual lenght of the address |
@@ -647,12 +654,14 @@ tcp_address_to_string (void *cls, const void *addr, size_t addrlen) | |||
647 | * @param addrlen length of the address | 654 | * @param addrlen length of the address |
648 | * @param buf location to store the buffer | 655 | * @param buf location to store the buffer |
649 | * @param added location to store the number of bytes in the buffer. | 656 | * @param added location to store the number of bytes in the buffer. |
650 | * If the function returns GNUNET_SYSERR, its contents are undefined. | 657 | * If the function returns #GNUNET_SYSERR, its contents are undefined. |
651 | * @return GNUNET_OK on success, GNUNET_SYSERR on failure | 658 | * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure |
652 | */ | 659 | */ |
653 | static int | 660 | static int |
654 | tcp_string_to_address (void *cls, const char *addr, uint16_t addrlen, | 661 | tcp_string_to_address (void *cls, |
655 | void **buf, size_t *added) | 662 | const char *addr, |
663 | uint16_t addrlen, | ||
664 | void **buf, size_t *added) | ||
656 | { | 665 | { |
657 | struct sockaddr_storage socket_address; | 666 | struct sockaddr_storage socket_address; |
658 | char *address; | 667 | char *address; |
@@ -1024,17 +1033,25 @@ disconnect_session (struct Session *session) | |||
1024 | 1033 | ||
1025 | stop_session_timeout (session); | 1034 | stop_session_timeout (session); |
1026 | 1035 | ||
1027 | if (GNUNET_YES == GNUNET_CONTAINER_multipeermap_remove (plugin->sessionmap, &session->target, session)) | 1036 | if (GNUNET_YES == |
1037 | GNUNET_CONTAINER_multipeermap_remove (plugin->sessionmap, | ||
1038 | &session->target, | ||
1039 | session)) | ||
1028 | { | 1040 | { |
1029 | GNUNET_STATISTICS_update (session->plugin->env->stats, | 1041 | GNUNET_STATISTICS_update (session->plugin->env->stats, |
1030 | gettext_noop ("# TCP sessions active"), -1, | 1042 | gettext_noop ("# TCP sessions active"), -1, |
1031 | GNUNET_NO); | 1043 | GNUNET_NO); |
1032 | dec_sessions (plugin, session, __LINE__); | 1044 | dec_sessions (plugin, session, __LINE__); |
1033 | } | 1045 | } |
1034 | else GNUNET_assert (GNUNET_YES == GNUNET_CONTAINER_multipeermap_remove (plugin->nat_wait_conns, &session->target, session)); | 1046 | else |
1035 | 1047 | { | |
1048 | GNUNET_assert (GNUNET_YES == | ||
1049 | GNUNET_CONTAINER_multipeermap_remove (plugin->nat_wait_conns, | ||
1050 | &session->target, | ||
1051 | session)); | ||
1052 | } | ||
1036 | /* clean up state */ | 1053 | /* clean up state */ |
1037 | if (session->transmit_handle != NULL) | 1054 | if (NULL != session->transmit_handle) |
1038 | { | 1055 | { |
1039 | GNUNET_SERVER_notify_transmit_ready_cancel (session->transmit_handle); | 1056 | GNUNET_SERVER_notify_transmit_ready_cancel (session->transmit_handle); |
1040 | session->transmit_handle = NULL; | 1057 | session->transmit_handle = NULL; |
@@ -1630,29 +1647,29 @@ struct PrettyPrinterContext | |||
1630 | }; | 1647 | }; |
1631 | 1648 | ||
1632 | 1649 | ||
1633 | 1650 | static void | |
1634 | void | 1651 | ppc_cancel_task (void *cls, |
1635 | ppc_cancel_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 1652 | const struct GNUNET_SCHEDULER_TaskContext *tc) |
1636 | { | 1653 | { |
1637 | int count = 0; | 1654 | int count = 0; |
1638 | struct PrettyPrinterContext *ppc = cls; | 1655 | struct PrettyPrinterContext *ppc = cls; |
1639 | struct PrettyPrinterContext *cur; | 1656 | struct PrettyPrinterContext *cur; |
1640 | for (cur = ppc_dll_head; (NULL != cur); cur = cur->next) | 1657 | |
1641 | { | 1658 | for (cur = ppc_dll_head; (NULL != cur); cur = cur->next) |
1642 | if (cur != ppc) | 1659 | { |
1643 | count++; | 1660 | if (cur != ppc) |
1644 | } | 1661 | count++; |
1645 | 1662 | } | |
1646 | // GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cancel request %p, %u pending\n", ppc, count); | 1663 | |
1647 | ppc->timeout_task = GNUNET_SCHEDULER_NO_TASK; | 1664 | // GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cancel request %p, %u pending\n", ppc, count); |
1648 | if (NULL != ppc->resolver_handle) | 1665 | ppc->timeout_task = GNUNET_SCHEDULER_NO_TASK; |
1649 | { | 1666 | if (NULL != ppc->resolver_handle) |
1650 | GNUNET_RESOLVER_request_cancel (ppc->resolver_handle); | 1667 | { |
1651 | ppc->resolver_handle = NULL; | 1668 | GNUNET_RESOLVER_request_cancel (ppc->resolver_handle); |
1652 | } | 1669 | ppc->resolver_handle = NULL; |
1653 | 1670 | } | |
1654 | GNUNET_CONTAINER_DLL_remove (ppc_dll_head, ppc_dll_tail, ppc); | 1671 | GNUNET_CONTAINER_DLL_remove (ppc_dll_head, ppc_dll_tail, ppc); |
1655 | GNUNET_free (ppc); | 1672 | GNUNET_free (ppc); |
1656 | } | 1673 | } |
1657 | 1674 | ||
1658 | 1675 | ||
@@ -1670,12 +1687,12 @@ append_port (void *cls, const char *hostname) | |||
1670 | char *ret; | 1687 | char *ret; |
1671 | int count = 0; | 1688 | int count = 0; |
1672 | 1689 | ||
1673 | for (cur = ppc_dll_head; (NULL != cur); cur = cur->next) | 1690 | for (cur = ppc_dll_head; (NULL != cur); cur = cur->next) |
1674 | { | 1691 | { |
1675 | if (cur != ppc) | 1692 | if (cur != ppc) |
1676 | count++; | 1693 | count++; |
1677 | } | 1694 | } |
1678 | //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Callback request %p == %s, %u pending\n", ppc, hostname, count); | 1695 | //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Callback request %p == %s, %u pending\n", ppc, hostname, count); |
1679 | if (hostname == NULL) | 1696 | if (hostname == NULL) |
1680 | { | 1697 | { |
1681 | ppc->asc (ppc->asc_cls, NULL); | 1698 | ppc->asc (ppc->asc_cls, NULL); |
@@ -1786,19 +1803,20 @@ tcp_plugin_address_pretty_printer (void *cls, const char *type, | |||
1786 | ppc->port = port; | 1803 | ppc->port = port; |
1787 | ppc->options = options; | 1804 | ppc->options = options; |
1788 | ppc->timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(timeout, 2), | 1805 | ppc->timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(timeout, 2), |
1789 | &ppc_cancel_task, ppc); | 1806 | &ppc_cancel_task, ppc); |
1790 | ppc->resolver_handle = GNUNET_RESOLVER_hostname_get (sb, sbs, !numeric, | 1807 | ppc->resolver_handle = GNUNET_RESOLVER_hostname_get (sb, sbs, !numeric, |
1791 | timeout, &append_port, ppc); | 1808 | timeout, |
1792 | if (NULL != ppc->resolver_handle) | 1809 | &append_port, ppc); |
1793 | { | 1810 | if (NULL != ppc->resolver_handle) |
1794 | //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Adding request %p\n", ppc); | 1811 | { |
1795 | GNUNET_CONTAINER_DLL_insert (ppc_dll_head, ppc_dll_tail, ppc); | 1812 | //GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Adding request %p\n", ppc); |
1796 | } | 1813 | GNUNET_CONTAINER_DLL_insert (ppc_dll_head, ppc_dll_tail, ppc); |
1797 | else | 1814 | } |
1798 | { | 1815 | else |
1799 | GNUNET_break (0); | 1816 | { |
1800 | GNUNET_free (ppc); | 1817 | GNUNET_break (0); |
1801 | } | 1818 | GNUNET_free (ppc); |
1819 | } | ||
1802 | } | 1820 | } |
1803 | 1821 | ||
1804 | 1822 | ||
@@ -2372,7 +2390,7 @@ notify_send_probe (void *cls, size_t size, void *buf) | |||
2372 | * | 2390 | * |
2373 | * @param cls closure | 2391 | * @param cls closure |
2374 | * @param addr address to try | 2392 | * @param addr address to try |
2375 | * @param addrlen number of bytes in addr | 2393 | * @param addrlen number of bytes in @a addr |
2376 | */ | 2394 | */ |
2377 | static void | 2395 | static void |
2378 | try_connection_reversal (void *cls, const struct sockaddr *addr, | 2396 | try_connection_reversal (void *cls, const struct sockaddr *addr, |
@@ -2421,9 +2439,9 @@ try_connection_reversal (void *cls, const struct sockaddr *addr, | |||
2421 | * Session was idle, so disconnect it | 2439 | * Session was idle, so disconnect it |
2422 | */ | 2440 | */ |
2423 | static void | 2441 | static void |
2424 | session_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 2442 | session_timeout (void *cls, |
2443 | const struct GNUNET_SCHEDULER_TaskContext *tc) | ||
2425 | { | 2444 | { |
2426 | GNUNET_assert (NULL != cls); | ||
2427 | struct Session *s = cls; | 2445 | struct Session *s = cls; |
2428 | 2446 | ||
2429 | s->timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2447 | s->timeout_task = GNUNET_SCHEDULER_NO_TASK; |
@@ -2433,7 +2451,7 @@ session_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
2433 | GNUNET_STRINGS_relative_time_to_string (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT, | 2451 | GNUNET_STRINGS_relative_time_to_string (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT, |
2434 | GNUNET_YES)); | 2452 | GNUNET_YES)); |
2435 | /* call session destroy function */ | 2453 | /* call session destroy function */ |
2436 | disconnect_session(s); | 2454 | disconnect_session (s); |
2437 | } | 2455 | } |
2438 | 2456 | ||
2439 | 2457 | ||
@@ -2445,7 +2463,7 @@ start_session_timeout (struct Session *s) | |||
2445 | { | 2463 | { |
2446 | GNUNET_assert (NULL != s); | 2464 | GNUNET_assert (NULL != s); |
2447 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == s->timeout_task); | 2465 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == s->timeout_task); |
2448 | s->timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT, | 2466 | s->timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT, |
2449 | &session_timeout, | 2467 | &session_timeout, |
2450 | s); | 2468 | s); |
2451 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2469 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -2466,9 +2484,9 @@ reschedule_session_timeout (struct Session *s) | |||
2466 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK != s->timeout_task); | 2484 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK != s->timeout_task); |
2467 | 2485 | ||
2468 | GNUNET_SCHEDULER_cancel (s->timeout_task); | 2486 | GNUNET_SCHEDULER_cancel (s->timeout_task); |
2469 | s->timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT, | 2487 | s->timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT, |
2470 | &session_timeout, | 2488 | &session_timeout, |
2471 | s); | 2489 | s); |
2472 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 2490 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2473 | "Timeout rescheduled for session %p set to %s\n", | 2491 | "Timeout rescheduled for session %p set to %s\n", |
2474 | s, | 2492 | s, |
@@ -2478,7 +2496,9 @@ reschedule_session_timeout (struct Session *s) | |||
2478 | 2496 | ||
2479 | 2497 | ||
2480 | /** | 2498 | /** |
2481 | * Cancel timeout | 2499 | * Cancel timeout. |
2500 | * | ||
2501 | * @param s session to cancel timeout for | ||
2482 | */ | 2502 | */ |
2483 | static void | 2503 | static void |
2484 | stop_session_timeout (struct Session *s) | 2504 | stop_session_timeout (struct Session *s) |
@@ -2634,7 +2654,7 @@ libgnunet_plugin_transport_tcp_init (void *cls) | |||
2634 | GNUNET_YES, 0, 0, NULL, NULL, NULL, | 2654 | GNUNET_YES, 0, 0, NULL, NULL, NULL, |
2635 | &try_connection_reversal, plugin); | 2655 | &try_connection_reversal, plugin); |
2636 | } | 2656 | } |
2637 | api = GNUNET_malloc (sizeof (struct GNUNET_TRANSPORT_PluginFunctions)); | 2657 | api = GNUNET_new (struct GNUNET_TRANSPORT_PluginFunctions); |
2638 | api->cls = plugin; | 2658 | api->cls = plugin; |
2639 | api->send = &tcp_plugin_send; | 2659 | api->send = &tcp_plugin_send; |
2640 | api->get_session = &tcp_plugin_get_session; | 2660 | api->get_session = &tcp_plugin_get_session; |
@@ -2716,23 +2736,26 @@ libgnunet_plugin_transport_tcp_done (void *cls) | |||
2716 | GNUNET_free (api); | 2736 | GNUNET_free (api); |
2717 | return NULL; | 2737 | return NULL; |
2718 | } | 2738 | } |
2719 | LOG (GNUNET_ERROR_TYPE_DEBUG, "Shutting down TCP plugin\n"); | 2739 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
2740 | "Shutting down TCP plugin\n"); | ||
2720 | 2741 | ||
2721 | /* Removing leftover sessions */ | 2742 | /* Removing leftover sessions */ |
2722 | GNUNET_CONTAINER_multipeermap_iterate(plugin->sessionmap, &session_disconnect_it, NULL); | 2743 | GNUNET_CONTAINER_multipeermap_iterate (plugin->sessionmap, |
2744 | &session_disconnect_it, NULL); | ||
2723 | /* Removing leftover NAT sessions */ | 2745 | /* Removing leftover NAT sessions */ |
2724 | GNUNET_CONTAINER_multipeermap_iterate(plugin->nat_wait_conns, &session_disconnect_it, NULL); | 2746 | GNUNET_CONTAINER_multipeermap_iterate (plugin->nat_wait_conns, |
2747 | &session_disconnect_it, NULL); | ||
2725 | 2748 | ||
2726 | next = ppc_dll_head; | 2749 | next = ppc_dll_head; |
2727 | for (cur = next; NULL != cur; cur = next) | 2750 | for (cur = next; NULL != cur; cur = next) |
2728 | { | 2751 | { |
2729 | next = cur->next; | 2752 | next = cur->next; |
2730 | GNUNET_CONTAINER_DLL_remove (ppc_dll_head, ppc_dll_tail, cur); | 2753 | GNUNET_CONTAINER_DLL_remove (ppc_dll_head, ppc_dll_tail, cur); |
2731 | if (NULL != cur->resolver_handle) | 2754 | if (NULL != cur->resolver_handle) |
2732 | GNUNET_RESOLVER_request_cancel (cur->resolver_handle); | 2755 | GNUNET_RESOLVER_request_cancel (cur->resolver_handle); |
2733 | GNUNET_SCHEDULER_cancel (cur->timeout_task); | 2756 | GNUNET_SCHEDULER_cancel (cur->timeout_task); |
2734 | GNUNET_free (cur); | 2757 | GNUNET_free (cur); |
2735 | GNUNET_break (0); | 2758 | GNUNET_break (0); |
2736 | } | 2759 | } |
2737 | 2760 | ||
2738 | if (plugin->service != NULL) | 2761 | if (plugin->service != NULL) |