From: Matthias Wachs Date: Thu, 20 May 2010 07:40:02 +0000 (+0000) Subject: (no commit message) X-Git-Tag: initial-import-from-subversion-38251~21637 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4e2ec885b7d6aeba1f02172f64ca0b1de17b73e5;p=oweals%2Fgnunet.git --- diff --git a/src/transport/plugin_transport_http.c b/src/transport/plugin_transport_http.c index 7815d4fbd..af2a19cde 100644 --- a/src/transport/plugin_transport_http.c +++ b/src/transport/plugin_transport_http.c @@ -351,6 +351,7 @@ accessHandlerCallback (void *cls, struct sockaddr_in *addrin; struct sockaddr_in6 *addrin6; char * address = NULL; + int res = GNUNET_NO; if ( NULL == *httpSessionCache) { @@ -380,7 +381,18 @@ accessHandlerCallback (void *cls, cs = plugin->sessions; while ( NULL != cs) { - if ( 0 == memcmp(conn_info->client_addr,cs->addr, sizeof (struct sockaddr_in))) + + /* FIXME: When are two connections equal? ip1 == ip2 or ip1:port1 == ip2:port2 ? + * Think about NAT, reuse connections... + */ + + /* Comparison based on ip address */ + res = (0 == memcmp(&(conn_info->client_addr->sin_addr),&(cs->addr->sin_addr), sizeof (struct in_addr))) ? GNUNET_YES : GNUNET_NO; + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"res is %u \n",res); + /* Comparison based on ip address, port number and address family */ + /* res = (0 == memcmp((conn_info->client_addr),(cs->addr), sizeof (struct sockaddr_in))) ? GNUNET_YES : GNUNET_NO; + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"port1 is %u port2 is %u, res is %u \n",conn_info->client_addr->sin_port,cs->addr->sin_port,res); */ + if ( GNUNET_YES == res) { /* existing session for this address found */ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Session `%s' found\n",address); @@ -394,8 +406,11 @@ accessHandlerCallback (void *cls, { /* create new session object */ cs = GNUNET_malloc ( sizeof( struct Session) ); + cs->addr = GNUNET_malloc ( sizeof (struct sockaddr_in) ); + + cs->ip = address; - cs->addr = conn_info->client_addr; + memcpy(cs->addr, conn_info->client_addr, sizeof (struct sockaddr_in)); cs->next = NULL; cs->is_active = GNUNET_YES;