aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2010-06-15 12:36:06 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2010-06-15 12:36:06 +0000
commitb12cbf5add53687cdd9415e86285b0f9ff0d96c2 (patch)
tree8f2e388a5489924ff8c4c78c9705ed9f59fff484
parentc1bfa4795695fce608b2a67892af70b104fcf959 (diff)
downloadgnunet-b12cbf5add53687cdd9415e86285b0f9ff0d96c2.tar.gz
gnunet-b12cbf5add53687cdd9415e86285b0f9ff0d96c2.zip
-rw-r--r--src/transport/plugin_transport_http.c42
1 files changed, 8 insertions, 34 deletions
diff --git a/src/transport/plugin_transport_http.c b/src/transport/plugin_transport_http.c
index e7cf7ea88..a1fe426b3 100644
--- a/src/transport/plugin_transport_http.c
+++ b/src/transport/plugin_transport_http.c
@@ -178,16 +178,6 @@ struct Session
178 struct GNUNET_PeerIdentity sender; 178 struct GNUNET_PeerIdentity sender;
179 179
180 /** 180 /**
181 * Sender's url
182 */
183 char * url;
184
185 /**
186 * Sender's ip address to distinguish between incoming connections
187 */
188 char * ip;
189
190 /**
191 * Sender's ip address to distinguish between incoming connections 181 * Sender's ip address to distinguish between incoming connections
192 */ 182 */
193 struct sockaddr_in * addr_inbound; 183 struct sockaddr_in * addr_inbound;
@@ -378,33 +368,17 @@ static struct Session * find_session_by_curlhandle( CURL* handle )
378 */ 368 */
379static struct Session * create_session (struct sockaddr_in *addr_in, struct sockaddr_in *addr_out, const struct GNUNET_PeerIdentity *peer) 369static struct Session * create_session (struct sockaddr_in *addr_in, struct sockaddr_in *addr_out, const struct GNUNET_PeerIdentity *peer)
380{ 370{
381 struct sockaddr_in *addrin;
382 struct sockaddr_in6 *addrin6;
383 struct Session * ses = GNUNET_malloc ( sizeof( struct Session) ); 371 struct Session * ses = GNUNET_malloc ( sizeof( struct Session) );
384 372
385 ses->addr_inbound = GNUNET_malloc ( sizeof (struct sockaddr_in) ); 373 ses->addr_inbound = GNUNET_malloc ( sizeof (struct sockaddr_in) );
386 ses->addr_outbound = GNUNET_malloc ( sizeof (struct sockaddr_in) ); 374 ses->addr_outbound = GNUNET_malloc ( sizeof (struct sockaddr_in) );
387
388 ses->next = NULL; 375 ses->next = NULL;
389 ses->plugin = plugin; 376 ses->plugin = plugin;
390 if (NULL != addr_in) 377 if ((NULL != addr_in) && (( AF_INET == addr_in->sin_family) || ( AF_INET6 == addr_in->sin_family)))
391 { 378 {
392
393 memcpy(ses->addr_inbound, addr_in, sizeof (struct sockaddr_in)); 379 memcpy(ses->addr_inbound, addr_in, sizeof (struct sockaddr_in));
394 if ( AF_INET == addr_in->sin_family)
395 {
396 ses->ip = GNUNET_malloc (INET_ADDRSTRLEN);
397 addrin = addr_in;
398 inet_ntop(addrin->sin_family,&(addrin->sin_addr),ses->ip,INET_ADDRSTRLEN);
399 }
400 if ( AF_INET6 == addr_in->sin_family)
401 {
402 ses->ip = GNUNET_malloc (INET6_ADDRSTRLEN);
403 addrin6 = (struct sockaddr_in6 *) addr_in;
404 inet_ntop(addrin6->sin6_family, &(addrin6->sin6_addr) ,ses->ip,INET6_ADDRSTRLEN);
405 }
406 } 380 }
407 if (NULL != addr_out) 381 if ((NULL != addr_out) && (( AF_INET == addr_out->sin_family) || ( AF_INET6 == addr_out->sin_family)))
408 { 382 {
409 memcpy(ses->addr_outbound, addr_out, sizeof (struct sockaddr_in)); 383 memcpy(ses->addr_outbound, addr_out, sizeof (struct sockaddr_in));
410 } 384 }
@@ -562,15 +536,15 @@ accessHandlerCallback (void *cls,
562 } 536 }
563 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"New Session `%s' inserted, count %u \n", address, plugin->session_count); 537 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"New Session `%s' inserted, count %u \n", address, plugin->session_count);
564 } 538 }
565 /* Updating session */
566 memcpy(cs->addr_inbound,addrin, sizeof(struct sockaddr_in));
567 539
568 /* Set closure */ 540 /* Set closure */
569 if (*httpSessionCache == NULL) 541 if (*httpSessionCache == NULL)
570 { 542 {
571 *httpSessionCache = cs; 543 *httpSessionCache = cs;
544 /* Updating session */
545 memcpy(cs->addr_inbound,conn_info->client_addr, sizeof(struct sockaddr_in));
572 } 546 }
573 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"HTTP Daemon has new an incoming `%s' request from peer `%s' (`[%s]:%u')\n",method, GNUNET_i2s(&cs->sender),cs->ip,cs->addr_inbound->sin_port); 547 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"HTTP Daemon has new an incoming `%s' request from peer `%s' (`[%s]:%u')\n",method, GNUNET_i2s(&cs->sender),address,cs->addr_inbound->sin_port);
574 } 548 }
575 else 549 else
576 { 550 {
@@ -645,7 +619,8 @@ accessHandlerCallback (void *cls,
645 { 619 {
646 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Recieved GNUnet message type %u size %u and payload %u \n",ntohs (gn_msg->type), ntohs (gn_msg->size), ntohs (gn_msg->size)-sizeof(struct GNUNET_MessageHeader)); 620 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,"Recieved GNUnet message type %u size %u and payload %u \n",ntohs (gn_msg->type), ntohs (gn_msg->size), ntohs (gn_msg->size)-sizeof(struct GNUNET_MessageHeader));
647 /* forwarding message to transport */ 621 /* forwarding message to transport */
648 plugin->env->receive(plugin->env, &(cs->sender), gn_msg, 1, cs , cs->ip, strlen(cs->ip) ); 622
623 //plugin->env->receive(plugin->env, &(cs->sender), gn_msg, 1, cs , cs->ip, strlen(cs->ip) );
649 send_error_to_client = GNUNET_NO; 624 send_error_to_client = GNUNET_NO;
650 } 625 }
651 } 626 }
@@ -1004,7 +979,7 @@ static void send_execute (void *cls,
1004 GNUNET_log(GNUNET_ERROR_TYPE_INFO, 979 GNUNET_log(GNUNET_ERROR_TYPE_INFO,
1005 _("%s failed for `%s' at %s:%d: `%s'\n"), 980 _("%s failed for `%s' at %s:%d: `%s'\n"),
1006 "curl_multi_perform", 981 "curl_multi_perform",
1007 cs->ip, 982 GNUNET_i2s(&cs->sender),
1008 __FILE__, 983 __FILE__,
1009 __LINE__, 984 __LINE__,
1010 curl_easy_strerror (msg->data.result)); 985 curl_easy_strerror (msg->data.result));
@@ -1579,7 +1554,6 @@ libgnunet_plugin_transport_http_done (void *cls)
1579 } 1554 }
1580 GNUNET_free (cs->pending_inbound_msg->buf); 1555 GNUNET_free (cs->pending_inbound_msg->buf);
1581 GNUNET_free (cs->pending_inbound_msg); 1556 GNUNET_free (cs->pending_inbound_msg);
1582 GNUNET_free (cs->ip);
1583 GNUNET_free_non_null (cs->addr_inbound); 1557 GNUNET_free_non_null (cs->addr_inbound);
1584 GNUNET_free_non_null (cs->addr_outbound); 1558 GNUNET_free_non_null (cs->addr_outbound);
1585 GNUNET_free (cs); 1559 GNUNET_free (cs);