diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-06-29 08:24:25 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-06-29 08:24:25 +0000 |
commit | ecfbbfc341c5c49d23b468f84efa1d7fa5706261 (patch) | |
tree | 89e8ce70505777fad936c1fb41d414c741886a61 /src/transport | |
parent | 0beed5ba03f1a29dbc27c62a063ca51dbe625663 (diff) |
fixing "minor changes" and repair things that obviously never worked
Diffstat (limited to 'src/transport')
-rw-r--r-- | src/transport/gnunet-service-transport.c | 8 | ||||
-rw-r--r-- | src/transport/plugin_transport_unix.c | 57 |
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; } |