[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r15811 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r15811 - gnunet/src/transport |
Date: |
Fri, 1 Jul 2011 15:32:21 +0200 |
Author: wachs
Date: 2011-07-01 15:32:21 +0200 (Fri, 01 Jul 2011)
New Revision: 15811
Modified:
gnunet/src/transport/plugin_transport_http.c
Log:
changes to address mgmt
Modified: gnunet/src/transport/plugin_transport_http.c
===================================================================
--- gnunet/src/transport/plugin_transport_http.c 2011-07-01 10:38:08 UTC
(rev 15810)
+++ gnunet/src/transport/plugin_transport_http.c 2011-07-01 13:32:21 UTC
(rev 15811)
@@ -90,23 +90,12 @@
*/
#define HTTP_CONNECT_TIMEOUT 30
-
/**
* Network format for IPv4 addresses.
*/
struct IPv4HttpAddress
{
/**
- * Linked list next
- */
- struct IPv4HttpAddress * next;
-
- /**
- * Linked list previous
- */
- struct IPv4HttpAddress * prev;
-
- /**
* IPv4 address, in network byte order.
*/
uint32_t ipv4_addr GNUNET_PACKED;
@@ -115,25 +104,31 @@
* Port number, in network byte order.
*/
uint16_t u_port GNUNET_PACKED;
-
};
-
/**
- * Network format for IPv6 addresses.
+ * Wrapper for IPv4 addresses.
*/
-struct IPv6HttpAddress
+struct IPv4HttpAddressWrapper
{
/**
* Linked list next
*/
- struct IPv6HttpAddress * next;
+ struct IPv4HttpAddressWrapper * next;
/**
* Linked list previous
*/
- struct IPv6HttpAddress * prev;
+ struct IPv4HttpAddressWrapper * prev;
+ struct IPv4HttpAddress * addr;
+};
+
+/**
+ * Network format for IPv6 addresses.
+ */
+struct IPv6HttpAddress
+{
/**
* IPv6 address.
*/
@@ -146,7 +141,24 @@
};
+/**
+ * Wrapper for IPv4 addresses.
+ */
+struct IPv6HttpAddressWrapper
+{
+ /**
+ * Linked list next
+ */
+ struct IPv6HttpAddressWrapper * next;
+ /**
+ * Linked list previous
+ */
+ struct IPv6HttpAddressWrapper * prev;
+
+ struct IPv6HttpAddress * addr;
+};
+
/**
* Message to send using http
*/
@@ -421,22 +433,22 @@
/**
* ipv4 DLL head
*/
- struct IPv4HttpAddress * ipv4_addr_head;
+ struct IPv4HttpAddressWrapper * ipv4_addr_head;
/**
* ipv4 DLL tail
*/
- struct IPv4HttpAddress * ipv4_addr_tail;
+ struct IPv4HttpAddressWrapper * ipv4_addr_tail;
/**
* ipv6 DLL head
*/
- struct IPv6HttpAddress * ipv6_addr_head;
+ struct IPv6HttpAddressWrapper * ipv6_addr_head;
/**
* ipv6 DLL tail
*/
- struct IPv6HttpAddress * ipv6_addr_tail;
+ struct IPv6HttpAddressWrapper * ipv6_addr_tail;
/**
* Our ASCII encoded, hashed peer identity
@@ -2774,8 +2786,8 @@
struct Plugin *plugin = cls;
struct IPv4HttpAddress *v4;
struct IPv6HttpAddress *v6;
- struct IPv4HttpAddress *tv4 = plugin->ipv4_addr_head;
- struct IPv6HttpAddress *tv6 = plugin->ipv6_addr_head;
+ struct IPv4HttpAddressWrapper *w_tv4 = plugin->ipv4_addr_head;
+ struct IPv6HttpAddressWrapper *w_tv6 = plugin->ipv6_addr_head;
GNUNET_assert(cls !=NULL);
if ((addrlen != sizeof (struct IPv4HttpAddress)) &&
@@ -2791,13 +2803,13 @@
else
return GNUNET_SYSERR;
}
- while (tv4!=NULL)
+ while (w_tv4!=NULL)
{
- if (0==memcmp (&tv4->ipv4_addr, &v4->ipv4_addr, sizeof(uint32_t)))
+ if (0==memcmp (&w_tv4->addr->ipv4_addr, &v4->ipv4_addr,
sizeof(uint32_t)))
break;
- tv4 = tv4->next;
+ w_tv4 = w_tv4->next;
}
- if (tv4 != NULL)
+ if (w_tv4 != NULL)
return GNUNET_OK;
else
return GNUNET_SYSERR;
@@ -2812,13 +2824,13 @@
else
return GNUNET_SYSERR;
}
- while (tv6!=NULL)
+ while (w_tv6!=NULL)
{
- if (0 == memcmp (&tv6->ipv6_addr, &v6->ipv6_addr, sizeof(struct
in6_addr)))
+ if (0 == memcmp (&w_tv6->addr->ipv6_addr, &v6->ipv6_addr,
sizeof(struct in6_addr)))
break;
- tv6 = tv6->next;
+ w_tv6 = w_tv6->next;
}
- if (tv6 !=NULL)
+ if (w_tv6 !=NULL)
return GNUNET_OK;
else
return GNUNET_SYSERR;
@@ -2910,64 +2922,73 @@
{
struct Plugin *plugin = cls;
struct IPv4HttpAddress * t4 = NULL;
+ struct IPv4HttpAddressWrapper * w_t4 = NULL;
struct IPv6HttpAddress * t6 = NULL;
+ struct IPv6HttpAddressWrapper * w_t6 = NULL;
int af;
af = addr->sa_family;
switch (af)
{
case AF_INET:
- t4 = plugin->ipv4_addr_head;
- while (t4 != NULL)
+ w_t4 = plugin->ipv4_addr_head;
+ while (w_t4 != NULL)
{
- int res = memcmp(&t4->ipv4_addr,
+ int res = memcmp(&w_t4->addr->ipv4_addr,
&((struct sockaddr_in *) addr)->sin_addr,
sizeof (struct in_addr));
if (0 == res)
break;
- t4 = t4->next;
+ w_t4 = w_t4->next;
}
- if (t4 == NULL)
+ if (w_t4 == NULL)
{
+ w_t4 = GNUNET_malloc(sizeof(struct IPv4HttpAddressWrapper));
t4 = GNUNET_malloc(sizeof(struct IPv4HttpAddress));
memcpy (&t4->ipv4_addr,
&((struct sockaddr_in *) addr)->sin_addr,
sizeof (struct in_addr));
t4->u_port = htons (plugin->port_inbound);
+ w_t4->addr = t4;
+
GNUNET_CONTAINER_DLL_insert(plugin->ipv4_addr_head,
- plugin->ipv4_addr_tail,t4);
+ plugin->ipv4_addr_tail,w_t4);
}
plugin->env->notify_address(plugin->env->cls,
add_remove,
- t4, sizeof (struct IPv4HttpAddress));
+ w_t4->addr, sizeof (struct IPv4HttpAddress));
break;
case AF_INET6:
- t6 = plugin->ipv6_addr_head;
- while (t6 != NULL)
+ w_t6 = plugin->ipv6_addr_head;
+ while (w_t6)
{
- int res = memcmp(&t6->ipv6_addr,
+ int res = memcmp(&w_t6->addr->ipv6_addr,
&((struct sockaddr_in6 *) addr)->sin6_addr,
sizeof (struct in6_addr));
if (0 == res)
break;
- t6 = t6->next;
+ w_t6 = w_t6->next;
}
- if (t6 == NULL)
+ if (w_t6 == NULL)
{
+ w_t6 = GNUNET_malloc(sizeof(struct IPv6HttpAddressWrapper));
t6 = GNUNET_malloc(sizeof(struct IPv6HttpAddress));
memcpy (&t6->ipv6_addr,
&((struct sockaddr_in6 *) addr)->sin6_addr,
sizeof (struct in6_addr));
t6->u6_port = htons (plugin->port_inbound);
+
+ w_t6->addr = t6;
+
GNUNET_CONTAINER_DLL_insert(plugin->ipv6_addr_head,
- plugin->ipv6_addr_tail,t6);
+ plugin->ipv6_addr_tail,w_t6);
}
plugin->env->notify_address(plugin->env->cls,
add_remove,
- t6, sizeof (struct IPv6HttpAddress));
+ w_t6->addr, sizeof (struct IPv6HttpAddress));
break;
default:
return;
@@ -2982,54 +3003,54 @@
socklen_t addrlen)
{
struct Plugin *plugin = cls;
- struct IPv4HttpAddress * t4;
- struct IPv6HttpAddress * t6;
+ struct IPv4HttpAddressWrapper * w_t4 = NULL;
+ struct IPv6HttpAddressWrapper * w_t6 = NULL;
int af;
af = addr->sa_family;
switch (af)
{
case AF_INET:
- t4 = plugin->ipv4_addr_head;
- while (t4 != NULL)
+ w_t4 = plugin->ipv4_addr_head;
+ while (w_t4 != NULL)
{
- int res = memcmp(&t4->ipv4_addr,
+ int res = memcmp(&w_t4->addr->ipv4_addr,
&((struct sockaddr_in *) addr)->sin_addr,
sizeof (struct in_addr));
if (0 == res)
break;
- t4 = t4->next;
+ w_t4 = w_t4->next;
}
- if (t4 == NULL)
+ if (w_t4 == NULL)
return;
plugin->env->notify_address(plugin->env->cls,
add_remove,
- t4, sizeof (struct IPv4HttpAddress));
+ w_t4->addr, sizeof (struct IPv4HttpAddress));
- GNUNET_CONTAINER_DLL_remove(plugin->ipv4_addr_head,
+/* GNUNET_CONTAINER_DLL_remove(plugin->ipv4_addr_head,
plugin->ipv4_addr_tail,t4);
- GNUNET_free (t4);
+ GNUNET_free (t4);*/
break;
case AF_INET6:
- t6 = plugin->ipv6_addr_head;
- while (t6 != NULL)
+ w_t6 = plugin->ipv6_addr_head;
+ while (w_t6 != NULL)
{
- int res = memcmp(&t6->ipv6_addr,
+ int res = memcmp(&w_t6->addr->ipv6_addr,
&((struct sockaddr_in6 *) addr)->sin6_addr,
sizeof (struct in6_addr));
if (0 == res)
break;
- t6 = t6->next;
+ w_t6 = w_t6->next;
}
- if (t6 == NULL)
+ if (w_t6 == NULL)
return;
plugin->env->notify_address(plugin->env->cls,
add_remove,
- t6, sizeof (struct IPv6HttpAddress));
+ w_t6->addr, sizeof (struct IPv6HttpAddress));
- GNUNET_CONTAINER_DLL_remove(plugin->ipv6_addr_head,
+/* GNUNET_CONTAINER_DLL_remove(plugin->ipv6_addr_head,
plugin->ipv6_addr_tail,t6);
- GNUNET_free (t6);
+ GNUNET_free (t6);*/
break;
default:
return;
@@ -3097,14 +3118,13 @@
struct GNUNET_TRANSPORT_PluginFunctions *api = cls;
struct Plugin *plugin = api->cls;
CURLMcode mret;
- struct IPv4HttpAddress * ipv4addr;
- struct IPv6HttpAddress * ipv6addr;
+ struct IPv4HttpAddressWrapper * ipv4addr;
+ struct IPv6HttpAddressWrapper * ipv6addr;
GNUNET_assert(cls !=NULL);
if (plugin->nat != NULL)
GNUNET_NAT_unregister (plugin->nat);
-
if (plugin->http_server_daemon_v4 != NULL)
{
MHD_stop_daemon (plugin->http_server_daemon_v4);
@@ -3130,6 +3150,7 @@
{
ipv4addr = plugin->ipv4_addr_head;
GNUNET_CONTAINER_DLL_remove(plugin->ipv4_addr_head,plugin->ipv4_addr_tail,ipv4addr);
+ GNUNET_free(ipv4addr->addr);
GNUNET_free(ipv4addr);
}
@@ -3137,6 +3158,7 @@
{
ipv6addr = plugin->ipv6_addr_head;
GNUNET_CONTAINER_DLL_remove(plugin->ipv6_addr_head,plugin->ipv6_addr_tail,ipv6addr);
+ GNUNET_free(ipv4addr->addr);
GNUNET_free(ipv6addr);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r15811 - gnunet/src/transport,
gnunet <=