[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r23355 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r23355 - gnunet/src/transport |
Date: |
Wed, 22 Aug 2012 12:56:28 +0200 |
Author: wachs
Date: 2012-08-22 12:56:28 +0200 (Wed, 22 Aug 2012)
New Revision: 23355
Modified:
gnunet/src/transport/plugin_transport_http_server.c
gnunet/src/transport/test_transport_api_http_reverse_proxy.conf
Log:
more
Modified: gnunet/src/transport/plugin_transport_http_server.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_server.c 2012-08-22 10:06:18 UTC
(rev 23354)
+++ gnunet/src/transport/plugin_transport_http_server.c 2012-08-22 10:56:28 UTC
(rev 23355)
@@ -385,6 +385,79 @@
return NULL;
}
+
+static void *
+server_find_address (struct HTTP_Server_Plugin *plugin, const struct sockaddr
*addr, socklen_t addrlen)
+{
+ struct HttpAddressWrapper *w = NULL;
+ char *saddr;
+
+ GNUNET_asprintf(&saddr, "%s://%s", plugin->protocol, GNUNET_a2s (addr,
addrlen));
+ w = plugin->addr_head;
+ while (NULL != w)
+ {
+ if (0 == strcmp (saddr, w->addr->addr))
+ break;
+ w = w->next;
+ }
+
+ GNUNET_free (saddr);
+ return w;
+}
+
+static void
+server_add_address (void *cls, int add_remove, const struct sockaddr *addr,
+ socklen_t addrlen)
+{
+ struct HTTP_Server_Plugin *plugin = cls;
+ struct HttpAddressWrapper *w = NULL;
+ char *saddr;
+ size_t haddrlen;
+
+ GNUNET_asprintf(&saddr, "%s://%s", plugin->protocol, GNUNET_a2s (addr,
addrlen));
+
+ haddrlen = sizeof (struct HttpAddress) + strlen(saddr) + 1;
+ w = GNUNET_malloc (sizeof (struct HttpAddressWrapper));
+ w->addr = GNUNET_malloc (haddrlen);
+ w->addr->addr = &w->addr[1];
+ w->addr->addr_len = htonl (strlen(saddr) + 1);
+ memcpy (w->addr->addr, saddr, strlen(saddr) + 1);
+ GNUNET_free (saddr);
+
+ GNUNET_CONTAINER_DLL_insert(plugin->addr_head, plugin->addr_tail, w);
+ GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+ "Notifying transport to add address `%s'\n", w->addr->addr);
+
+ plugin->env->notify_address (plugin->env->cls, add_remove, w->addr,
haddrlen);
+}
+
+
+static void
+server_remove_address (void *cls, int add_remove, const struct sockaddr *addr,
+ socklen_t addrlen)
+{
+ struct HTTP_Server_Plugin *plugin = cls;
+ struct HttpAddressWrapper *w = NULL;
+ size_t haddrlen;
+
+ w = server_find_address (plugin, addr, addrlen);
+ if (NULL == w)
+ return;
+
+ haddrlen = sizeof (struct HttpAddress) + ntohl (w->addr->addr_len);
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ "Notifying transport to remove address `%s'\n",
http_server_plugin_address_to_string (NULL, w->addr, haddrlen));
+
+
+ GNUNET_CONTAINER_DLL_remove (plugin->addr_head, plugin->addr_tail, w);
+ plugin->env->notify_address (plugin->env->cls, add_remove, w->addr,
+ sizeof (struct HttpAddress) + ntohl (w->addr->addr_len));
+ GNUNET_free (w->addr);
+ GNUNET_free (w);
+}
+
+
+
/**
* Our external IP address/port mapping has changed.
*
@@ -409,10 +482,10 @@
switch (add_remove)
{
case GNUNET_YES:
- //nat_add_address (cls, add_remove, addr, addrlen);
+ server_add_address (cls, add_remove, addr, addrlen);
break;
case GNUNET_NO:
- //nat_remove_address (cls, add_remove, addr, addrlen);
+ server_remove_address (cls, add_remove, addr, addrlen);
break;
}
}
@@ -867,7 +940,7 @@
GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
_("Maximum number of connections is %u\n"),
plugin->max_connections);
-
+GNUNET_break(0);
return GNUNET_OK;
}
@@ -887,11 +960,25 @@
plugin->notify_ext_task = GNUNET_SCHEDULER_NO_TASK;
}
+ if (NULL != plugin->ext_addr)
+ {
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+ "Notifying transport to remove address `%s'\n",
+ http_server_plugin_address_to_string (NULL,
+ plugin->ext_addr,
+ plugin->ext_addr_len));
+ plugin->env->notify_address (plugin->env->cls,
+ GNUNET_NO,
+ plugin->ext_addr,
+ plugin->ext_addr_len);
+ }
+
/* Stop to report addresses to transport service */
server_stop_report_addresses (plugin);
/* Clean up */
GNUNET_free_non_null (plugin->external_hostname);
+ GNUNET_free_non_null (plugin->ext_addr);
GNUNET_free_non_null (plugin->server_addr_v4);
GNUNET_free_non_null (plugin->server_addr_v6);
@@ -931,13 +1018,11 @@
#endif
/* Configure plugin */
- if (GNUNET_SYSERR == server_configure_plugin (plugin));
+ if (GNUNET_SYSERR == server_configure_plugin (plugin))
{
- GNUNET_break (0);
LIBGNUNET_PLUGIN_TRANSPORT_DONE (api);
return NULL;
}
- GNUNET_break (0);
/* Check IPv6 support */
if (GNUNET_YES == plugin->use_ipv6)
Modified: gnunet/src/transport/test_transport_api_http_reverse_proxy.conf
===================================================================
--- gnunet/src/transport/test_transport_api_http_reverse_proxy.conf
2012-08-22 10:06:18 UTC (rev 23354)
+++ gnunet/src/transport/test_transport_api_http_reverse_proxy.conf
2012-08-22 10:56:28 UTC (rev 23355)
@@ -9,10 +9,10 @@
[transport-http_server]
PORT = 12080
EXTERNAL_HOSTNAME = fulcrum.net.in.tum.de:12080/peer
-USE_IPV4 = YES
-USE_IPV6 = YES
-BINDTO = 127.0.0.1
-BINDTO6 = ::1
+#USE_IPV4 = YES
+#USE_IPV6 = YES
+#BINDTO = 127.0.0.1
+#BINDTO6 = ::1
[arm]
PORT = 12085
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r23355 - gnunet/src/transport,
gnunet <=