diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2010-05-20 07:40:02 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2010-05-20 07:40:02 +0000 |
commit | 4e2ec885b7d6aeba1f02172f64ca0b1de17b73e5 (patch) | |
tree | 12ba1944c81b8d51fdfea63e1bb196d311707be2 /src | |
parent | f8d5049cb6d34e401255ea44b43e822212710404 (diff) | |
download | gnunet-4e2ec885b7d6aeba1f02172f64ca0b1de17b73e5.tar.gz gnunet-4e2ec885b7d6aeba1f02172f64ca0b1de17b73e5.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/plugin_transport_http.c | 19 |
1 files changed, 17 insertions, 2 deletions
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, | |||
351 | struct sockaddr_in *addrin; | 351 | struct sockaddr_in *addrin; |
352 | struct sockaddr_in6 *addrin6; | 352 | struct sockaddr_in6 *addrin6; |
353 | char * address = NULL; | 353 | char * address = NULL; |
354 | int res = GNUNET_NO; | ||
354 | 355 | ||
355 | if ( NULL == *httpSessionCache) | 356 | if ( NULL == *httpSessionCache) |
356 | { | 357 | { |
@@ -380,7 +381,18 @@ accessHandlerCallback (void *cls, | |||
380 | cs = plugin->sessions; | 381 | cs = plugin->sessions; |
381 | while ( NULL != cs) | 382 | while ( NULL != cs) |
382 | { | 383 | { |
383 | if ( 0 == memcmp(conn_info->client_addr,cs->addr, sizeof (struct sockaddr_in))) | 384 | |
385 | /* FIXME: When are two connections equal? ip1 == ip2 or ip1:port1 == ip2:port2 ? | ||
386 | * Think about NAT, reuse connections... | ||
387 | */ | ||
388 | |||
389 | /* Comparison based on ip address */ | ||
390 | res = (0 == memcmp(&(conn_info->client_addr->sin_addr),&(cs->addr->sin_addr), sizeof (struct in_addr))) ? GNUNET_YES : GNUNET_NO; | ||
391 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"res is %u \n",res); | ||
392 | /* Comparison based on ip address, port number and address family */ | ||
393 | /* res = (0 == memcmp((conn_info->client_addr),(cs->addr), sizeof (struct sockaddr_in))) ? GNUNET_YES : GNUNET_NO; | ||
394 | 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); */ | ||
395 | if ( GNUNET_YES == res) | ||
384 | { | 396 | { |
385 | /* existing session for this address found */ | 397 | /* existing session for this address found */ |
386 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Session `%s' found\n",address); | 398 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Session `%s' found\n",address); |
@@ -394,8 +406,11 @@ accessHandlerCallback (void *cls, | |||
394 | { | 406 | { |
395 | /* create new session object */ | 407 | /* create new session object */ |
396 | cs = GNUNET_malloc ( sizeof( struct Session) ); | 408 | cs = GNUNET_malloc ( sizeof( struct Session) ); |
409 | cs->addr = GNUNET_malloc ( sizeof (struct sockaddr_in) ); | ||
410 | |||
411 | |||
397 | cs->ip = address; | 412 | cs->ip = address; |
398 | cs->addr = conn_info->client_addr; | 413 | memcpy(cs->addr, conn_info->client_addr, sizeof (struct sockaddr_in)); |
399 | cs->next = NULL; | 414 | cs->next = NULL; |
400 | cs->is_active = GNUNET_YES; | 415 | cs->is_active = GNUNET_YES; |
401 | 416 | ||