aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_tcp.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-12-13 17:20:51 +0000
committerChristian Grothoff <christian@grothoff.org>2013-12-13 17:20:51 +0000
commit542fbe05c948ec86c07ea4683e6a387ad8a03f72 (patch)
tree4146333d07b9fc4c0efa5396a2651d13542434d3 /src/transport/plugin_transport_tcp.c
parented77a102556e6f1f9d51a04aeed1db22a9ce5cf6 (diff)
downloadgnunet-542fbe05c948ec86c07ea4683e6a387ad8a03f72.tar.gz
gnunet-542fbe05c948ec86c07ea4683e6a387ad8a03f72.zip
-removing useless session counting logic, doxygen, code cleanup
Diffstat (limited to 'src/transport/plugin_transport_tcp.c')
-rw-r--r--src/transport/plugin_transport_tcp.c98
1 files changed, 30 insertions, 68 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index 26fb8f862..83fea8ca5 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -454,50 +454,6 @@ static const char *
454tcp_address_to_string (void *cls, const void *addr, size_t addrlen); 454tcp_address_to_string (void *cls, const void *addr, size_t addrlen);
455 455
456 456
457static unsigned int sessions;
458
459
460static void
461inc_sessions (struct Plugin *plugin, struct Session *session, int line)
462{
463 sessions++;
464 unsigned int size = GNUNET_CONTAINER_multipeermap_size (plugin->sessionmap);
465 if (sessions != size)
466 LOG (GNUNET_ERROR_TYPE_DEBUG,
467 "Inconsistent sessions %u <-> session map size: %u\n",
468 sessions, size);
469 LOG (GNUNET_ERROR_TYPE_DEBUG,
470 "%4i Session increased to %u (session map size: %u): `%s' `%s'\n",
471 line,
472 sessions,
473 size,
474 GNUNET_i2s (&session->target),
475 tcp_address_to_string (NULL, session->addr, session->addrlen));
476}
477
478
479static void
480dec_sessions (struct Plugin *plugin,
481 struct Session *session, int line)
482{
483 GNUNET_assert (sessions > 0);
484 unsigned int size = GNUNET_CONTAINER_multipeermap_size(plugin->sessionmap);
485 sessions--;
486 if (sessions != size)
487 LOG (GNUNET_ERROR_TYPE_DEBUG,
488 "Inconsistent sessions %u <-> session map size: %u\n",
489 sessions, size);
490 LOG (GNUNET_ERROR_TYPE_DEBUG,
491 "%4i Session decreased to %u (session map size: %u): `%s' `%s'\n",
492 line,
493 sessions,
494 size,
495 GNUNET_i2s (&session->target),
496 tcp_address_to_string (NULL, session->addr, session->addrlen));
497}
498/* DEBUG CODE */
499
500
501/** 457/**
502 * Function to check if an inbound connection is acceptable. 458 * Function to check if an inbound connection is acceptable.
503 * Mostly used to limit the total number of open connections 459 * Mostly used to limit the total number of open connections
@@ -791,7 +747,8 @@ lookup_session_by_client (struct Plugin *plugin,
791 747
792 sc_ctx.client = client; 748 sc_ctx.client = client;
793 sc_ctx.ret = NULL; 749 sc_ctx.ret = NULL;
794 GNUNET_CONTAINER_multipeermap_iterate (plugin->sessionmap, &session_lookup_by_client_it, &sc_ctx); 750 GNUNET_CONTAINER_multipeermap_iterate (plugin->sessionmap,
751 &session_lookup_by_client_it, &sc_ctx);
795 return sc_ctx.ret; 752 return sc_ctx.ret;
796} 753}
797 754
@@ -1046,7 +1003,6 @@ tcp_disconnect_session (void *cls,
1046 GNUNET_STATISTICS_update (session->plugin->env->stats, 1003 GNUNET_STATISTICS_update (session->plugin->env->stats,
1047 gettext_noop ("# TCP sessions active"), -1, 1004 gettext_noop ("# TCP sessions active"), -1,
1048 GNUNET_NO); 1005 GNUNET_NO);
1049 dec_sessions (plugin, session, __LINE__);
1050 } 1006 }
1051 else 1007 else
1052 { 1008 {
@@ -1055,6 +1011,9 @@ tcp_disconnect_session (void *cls,
1055 &session->target, 1011 &session->target,
1056 session)); 1012 session));
1057 } 1013 }
1014 GNUNET_SERVER_client_set_user_context (session->client,
1015 (void *) NULL);
1016
1058 /* clean up state */ 1017 /* clean up state */
1059 if (NULL != session->transmit_handle) 1018 if (NULL != session->transmit_handle)
1060 { 1019 {
@@ -1246,9 +1205,10 @@ tcp_plugin_send (void *cls,
1246 "Asked to transmit %u bytes to `%s', added message to list.\n", 1205 "Asked to transmit %u bytes to `%s', added message to list.\n",
1247 msgbuf_size, GNUNET_i2s (&session->target)); 1206 msgbuf_size, GNUNET_i2s (&session->target));
1248 1207
1249 if (GNUNET_YES == GNUNET_CONTAINER_multipeermap_contains_value (plugin->sessionmap, 1208 if (GNUNET_YES ==
1250 &session->target, 1209 GNUNET_CONTAINER_multipeermap_contains_value (plugin->sessionmap,
1251 session)) 1210 &session->target,
1211 session))
1252 { 1212 {
1253 GNUNET_assert (session->client != NULL); 1213 GNUNET_assert (session->client != NULL);
1254 reschedule_session_timeout (session); 1214 reschedule_session_timeout (session);
@@ -1552,11 +1512,12 @@ tcp_plugin_get_session (void *cls,
1552 } 1512 }
1553 plugin->cur_connections++; 1513 plugin->cur_connections++;
1554 if (plugin->cur_connections == plugin->max_connections) 1514 if (plugin->cur_connections == plugin->max_connections)
1555 GNUNET_SERVER_suspend (plugin->server); /* Maximum number of connections rechead */ 1515 GNUNET_SERVER_suspend (plugin->server); /* Maximum number of connections rechead */
1556 1516
1557 LOG (GNUNET_ERROR_TYPE_DEBUG, 1517 LOG (GNUNET_ERROR_TYPE_DEBUG,
1558 "Asked to transmit to `%4s', creating fresh session using address `%s'.\n", 1518 "Asked to transmit to `%4s', creating fresh session using address `%s'.\n",
1559 GNUNET_i2s (&address->peer), GNUNET_a2s (sb, sbs)); 1519 GNUNET_i2s (&address->peer),
1520 GNUNET_a2s (sb, sbs));
1560 1521
1561 session = create_session (plugin, 1522 session = create_session (plugin,
1562 &address->peer, 1523 &address->peer,
@@ -1567,10 +1528,11 @@ tcp_plugin_get_session (void *cls,
1567 session->addrlen = addrlen; 1528 session->addrlen = addrlen;
1568 session->ats_address_network_type = (enum GNUNET_ATS_Network_Type) ntohl (ats.value); 1529 session->ats_address_network_type = (enum GNUNET_ATS_Network_Type) ntohl (ats.value);
1569 GNUNET_break (session->ats_address_network_type != GNUNET_ATS_NET_UNSPECIFIED); 1530 GNUNET_break (session->ats_address_network_type != GNUNET_ATS_NET_UNSPECIFIED);
1531 GNUNET_SERVER_client_set_user_context (session->client, session);
1570 GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap, 1532 GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap,
1571 &session->target, 1533 &session->target,
1572 session, GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 1534 session,
1573 inc_sessions (plugin, session, __LINE__); 1535 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
1574 LOG (GNUNET_ERROR_TYPE_DEBUG, 1536 LOG (GNUNET_ERROR_TYPE_DEBUG,
1575 "Creating new session for `%s' address `%s' session %p\n", 1537 "Creating new session for `%s' address `%s' session %p\n",
1576 GNUNET_i2s (&address->peer), 1538 GNUNET_i2s (&address->peer),
@@ -1964,7 +1926,8 @@ tcp_plugin_check_address (void *cls, const void *addr, size_t addrlen)
1964 * @param message the actual message 1926 * @param message the actual message
1965 */ 1927 */
1966static void 1928static void
1967handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client, 1929handle_tcp_nat_probe (void *cls,
1930 struct GNUNET_SERVER_Client *client,
1968 const struct GNUNET_MessageHeader *message) 1931 const struct GNUNET_MessageHeader *message)
1969{ 1932{
1970 struct Plugin *plugin = cls; 1933 struct Plugin *plugin = cls;
@@ -1977,8 +1940,8 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client,
1977 const struct sockaddr_in *s4; 1940 const struct sockaddr_in *s4;
1978 const struct sockaddr_in6 *s6; 1941 const struct sockaddr_in6 *s6;
1979 1942
1980 LOG (GNUNET_ERROR_TYPE_DEBUG, "Received NAT probe\n"); 1943 LOG (GNUNET_ERROR_TYPE_DEBUG,
1981 1944 "Received NAT probe\n");
1982 /* We have received a TCP NAT probe, meaning we (hopefully) initiated 1945 /* We have received a TCP NAT probe, meaning we (hopefully) initiated
1983 * a connection to this peer by running gnunet-nat-client. This peer 1946 * a connection to this peer by running gnunet-nat-client. This peer
1984 * received the punch message and now wants us to use the new connection 1947 * received the punch message and now wants us to use the new connection
@@ -2003,9 +1966,8 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client,
2003 } 1966 }
2004 1967
2005 session = 1968 session =
2006 GNUNET_CONTAINER_multipeermap_get (plugin->nat_wait_conns, 1969 GNUNET_CONTAINER_multipeermap_get (plugin->nat_wait_conns,
2007 &tcp_nat_probe-> 1970 &tcp_nat_probe->clientIdentity);
2008 clientIdentity);
2009 if (session == NULL) 1971 if (session == NULL)
2010 { 1972 {
2011 LOG (GNUNET_ERROR_TYPE_DEBUG, 1973 LOG (GNUNET_ERROR_TYPE_DEBUG,
@@ -2033,6 +1995,7 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client,
2033 (plugin->nat_wait_conns, 1995 (plugin->nat_wait_conns,
2034 &tcp_nat_probe->clientIdentity, 1996 &tcp_nat_probe->clientIdentity,
2035 session) == GNUNET_YES); 1997 session) == GNUNET_YES);
1998 GNUNET_SERVER_client_set_user_context (client, session);
2036 GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap, 1999 GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap,
2037 &session->target, session, 2000 &session->target, session,
2038 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 2001 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
@@ -2045,7 +2008,7 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client,
2045 { 2008 {
2046 case AF_INET: 2009 case AF_INET:
2047 s4 = vaddr; 2010 s4 = vaddr;
2048 t4 = GNUNET_malloc (sizeof (struct IPv4TcpAddress)); 2011 t4 = GNUNET_new (struct IPv4TcpAddress);
2049 t4->options = 0; 2012 t4->options = 0;
2050 t4->t4_port = s4->sin_port; 2013 t4->t4_port = s4->sin_port;
2051 t4->ipv4_addr = s4->sin_addr.s_addr; 2014 t4->ipv4_addr = s4->sin_addr.s_addr;
@@ -2054,7 +2017,7 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client,
2054 break; 2017 break;
2055 case AF_INET6: 2018 case AF_INET6:
2056 s6 = vaddr; 2019 s6 = vaddr;
2057 t6 = GNUNET_malloc (sizeof (struct IPv6TcpAddress)); 2020 t6 = GNUNET_new (struct IPv6TcpAddress);
2058 t6->options = 0; 2021 t6->options = 0;
2059 t6->t6_port = s6->sin6_port; 2022 t6->t6_port = s6->sin6_port;
2060 memcpy (&t6->ipv6_addr, &s6->sin6_addr, sizeof (struct in6_addr)); 2023 memcpy (&t6->ipv6_addr, &s6->sin6_addr, sizeof (struct in6_addr));
@@ -2074,7 +2037,6 @@ handle_tcp_nat_probe (void *cls, struct GNUNET_SERVER_Client *client,
2074 GNUNET_break (NULL == session->client); 2037 GNUNET_break (NULL == session->client);
2075 GNUNET_SERVER_client_keep (client); 2038 GNUNET_SERVER_client_keep (client);
2076 session->client = client; 2039 session->client = client;
2077 inc_sessions (plugin, session, __LINE__);
2078 GNUNET_STATISTICS_update (plugin->env->stats, 2040 GNUNET_STATISTICS_update (plugin->env->stats,
2079 gettext_noop ("# TCP sessions active"), 1, 2041 gettext_noop ("# TCP sessions active"), 1,
2080 GNUNET_NO); 2042 GNUNET_NO);
@@ -2180,11 +2142,11 @@ handle_tcp_welcome (void *cls, struct GNUNET_SERVER_Client *client,
2180 session, 2142 session,
2181 GNUNET_a2s (vaddr, alen)); 2143 GNUNET_a2s (vaddr, alen));
2182 GNUNET_free (vaddr); 2144 GNUNET_free (vaddr);
2145 GNUNET_SERVER_client_set_user_context (session->client, session);
2183 GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap, 2146 GNUNET_CONTAINER_multipeermap_put (plugin->sessionmap,
2184 &session->target, 2147 &session->target,
2185 session, 2148 session,
2186 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); 2149 GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
2187 inc_sessions (plugin, session, __LINE__);
2188 } 2150 }
2189 else 2151 else
2190 { 2152 {
@@ -2754,8 +2716,8 @@ libgnunet_plugin_transport_tcp_init (void *cls)
2754 /* Initially set connections to 0 */ 2716 /* Initially set connections to 0 */
2755 GNUNET_assert (NULL != plugin->env->stats); 2717 GNUNET_assert (NULL != plugin->env->stats);
2756 GNUNET_STATISTICS_set (plugin->env->stats, 2718 GNUNET_STATISTICS_set (plugin->env->stats,
2757 gettext_noop ("# TCP sessions active"), 0, 2719 gettext_noop ("# TCP sessions active"), 0,
2758 GNUNET_NO); 2720 GNUNET_NO);
2759 return api; 2721 return api;
2760} 2722}
2761 2723