aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2010-05-20 07:40:02 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2010-05-20 07:40:02 +0000
commit4e2ec885b7d6aeba1f02172f64ca0b1de17b73e5 (patch)
tree12ba1944c81b8d51fdfea63e1bb196d311707be2 /src
parentf8d5049cb6d34e401255ea44b43e822212710404 (diff)
downloadgnunet-4e2ec885b7d6aeba1f02172f64ca0b1de17b73e5.tar.gz
gnunet-4e2ec885b7d6aeba1f02172f64ca0b1de17b73e5.zip
Diffstat (limited to 'src')
-rw-r--r--src/transport/plugin_transport_http.c19
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