aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-06-29 08:24:25 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-06-29 08:24:25 +0000
commitecfbbfc341c5c49d23b468f84efa1d7fa5706261 (patch)
tree89e8ce70505777fad936c1fb41d414c741886a61 /src/transport
parent0beed5ba03f1a29dbc27c62a063ca51dbe625663 (diff)
fixing "minor changes" and repair things that obviously never worked
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/gnunet-service-transport.c8
-rw-r--r--src/transport/plugin_transport_unix.c57
2 files changed, 26 insertions, 39 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c
index b96ae6c223..cf7434c320 100644
--- a/src/transport/gnunet-service-transport.c
+++ b/src/transport/gnunet-service-transport.c
@@ -1681,9 +1681,11 @@ a2s (const char *plugin,
p = find_transport (plugin);
if ((p == NULL) || (addr_len == 0) || (addr == NULL))
return NULL;
- return p->api->address_to_string (p->api->cls,
+
+ return p->api->address_to_string (NULL,
addr,
addr_len);
+ return NULL;
}
@@ -2773,7 +2775,7 @@ plugin_env_session_end (void *cls,
* provided by the plugin can be reached.
*
* @param cls closure
- * @param add_remove YES to add, NO to remove the address
+ * @param add_remove GNUNET_YES to add, GNUNET_NO to remove the address
* @param addr one of the addresses of the host, NULL for the last address
* the specific address format depends on the transport
* @param addrlen length of the address
@@ -2788,6 +2790,8 @@ plugin_env_notify_address (void *cls,
struct OwnAddressList *al;
struct OwnAddressList *prev;
+ GNUNET_assert (p->api != NULL);
+
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
(add_remove == GNUNET_YES)
? "Adding `%s':%s to the set of our addresses\n"
diff --git a/src/transport/plugin_transport_unix.c b/src/transport/plugin_transport_unix.c
index 4f10d7270b..ad8756ecd0 100644
--- a/src/transport/plugin_transport_unix.c
+++ b/src/transport/plugin_transport_unix.c
@@ -1070,41 +1070,27 @@ unix_address_to_string (void *cls,
const void *addr,
size_t addrlen)
{
- static char rbuf[INET6_ADDRSTRLEN + 10];
- char buf[INET6_ADDRSTRLEN];
- const void *sb;
- struct in_addr a4;
- struct in6_addr a6;
- const struct IPv4UdpAddress *t4;
- const struct IPv6UdpAddress *t6;
- int af;
- uint16_t port;
-
- if (addrlen == sizeof (struct IPv6UdpAddress))
- {
- t6 = addr;
- af = AF_INET6;
- port = ntohs (t6->u6_port);
- memcpy (&a6, &t6->ipv6_addr, sizeof (a6));
- sb = &a6;
- }
- else if (addrlen == sizeof (struct IPv4UdpAddress))
- {
- t4 = addr;
- af = AF_INET;
- port = ntohs (t4->u_port);
- memcpy (&a4, &t4->ipv4_addr, sizeof (a4));
- sb = &a4;
- }
+ if ((addr != NULL) && (addrlen > 0))
+ return (const char *) addr;
else
return NULL;
- inet_ntop (af, sb, buf, INET6_ADDRSTRLEN);
- GNUNET_snprintf (rbuf,
- sizeof (rbuf),
- "%s:%u",
- buf,
- port);
- return rbuf;
+}
+
+/**
+ * Notify transport service about address
+ *
+ * @param cls the plugin
+ * @param tc unused
+ */
+static void
+address_notification (void *cls,
+ const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ struct Plugin *plugin = cls;
+ plugin->env->notify_address(plugin->env->cls,
+ GNUNET_YES,
+ plugin->unix_socket_path,
+ strlen(plugin->unix_socket_path) + 1);
}
/**
@@ -1157,10 +1143,7 @@ libgnunet_plugin_transport_unix_init (void *cls)
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
_("Failed to open UNIX sockets\n"));
- plugin->env->notify_address(plugin->env->cls,
- GNUNET_YES,
- plugin->unix_socket_path,
- strlen(plugin->unix_socket_path) + 1);
+ GNUNET_SCHEDULER_add_now(address_notification, plugin);
return api;
}