diff options
Diffstat (limited to 'src/transport')
-rw-r--r-- | src/transport/plugin_transport_unix.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/transport/plugin_transport_unix.c b/src/transport/plugin_transport_unix.c index 56e1de426..6c0a02e2c 100644 --- a/src/transport/plugin_transport_unix.c +++ b/src/transport/plugin_transport_unix.c | |||
@@ -384,7 +384,8 @@ unix_address_to_string (void *cls, const void *addr, size_t addrlen) | |||
384 | 384 | ||
385 | 385 | ||
386 | static struct sockaddr_un * | 386 | static struct sockaddr_un * |
387 | unix_address_to_sockaddr (const char *unixpath, | 387 | unix_address_to_sockaddr (const struct GNUNET_CONFIGURATION_Handle *cfg, |
388 | const char *unixpath, | ||
388 | socklen_t *sock_len) | 389 | socklen_t *sock_len) |
389 | { | 390 | { |
390 | struct sockaddr_un *un; | 391 | struct sockaddr_un *un; |
@@ -398,6 +399,17 @@ unix_address_to_sockaddr (const char *unixpath, | |||
398 | slen = sizeof (un->sun_path) - 1; | 399 | slen = sizeof (un->sun_path) - 1; |
399 | memcpy (un->sun_path, unixpath, slen); | 400 | memcpy (un->sun_path, unixpath, slen); |
400 | un->sun_path[slen] = '\0'; | 401 | un->sun_path[slen] = '\0'; |
402 | #ifdef LINUX | ||
403 | { | ||
404 | int abstract; | ||
405 | |||
406 | abstract = GNUNET_CONFIGURATION_get_value_yesno (cfg, | ||
407 | "TESTING", | ||
408 | "USE_ABSTRACT_SOCKETS"); | ||
409 | if (GNUNET_YES == abstract) | ||
410 | un->sun_path[0] = '\0'; | ||
411 | } | ||
412 | #endif | ||
401 | slen = sizeof (struct sockaddr_un); | 413 | slen = sizeof (struct sockaddr_un); |
402 | #if HAVE_SOCKADDR_IN_SIN_LEN | 414 | #if HAVE_SOCKADDR_IN_SIN_LEN |
403 | un->sun_len = (u_char) slen; | 415 | un->sun_len = (u_char) slen; |
@@ -633,7 +645,9 @@ unix_real_send (void *cls, | |||
633 | 645 | ||
634 | /* Prepare address */ | 646 | /* Prepare address */ |
635 | unixpath = (const char *) &addr[1]; | 647 | unixpath = (const char *) &addr[1]; |
636 | if (NULL == (un = unix_address_to_sockaddr (unixpath, &un_len))) | 648 | if (NULL == (un = unix_address_to_sockaddr (plugin->env->cfg, |
649 | unixpath, | ||
650 | &un_len))) | ||
637 | { | 651 | { |
638 | GNUNET_break (0); | 652 | GNUNET_break (0); |
639 | return -1; | 653 | return -1; |
@@ -1252,7 +1266,9 @@ unix_transport_server_start (void *cls) | |||
1252 | struct sockaddr_un *un; | 1266 | struct sockaddr_un *un; |
1253 | socklen_t un_len; | 1267 | socklen_t un_len; |
1254 | 1268 | ||
1255 | un = unix_address_to_sockaddr (plugin->unix_socket_path, &un_len); | 1269 | un = unix_address_to_sockaddr (plugin->env->cfg, |
1270 | plugin->unix_socket_path, | ||
1271 | &un_len); | ||
1256 | plugin->ats_network = plugin->env->get_address_type (plugin->env->cls, (const struct sockaddr *) un, un_len); | 1272 | plugin->ats_network = plugin->env->get_address_type (plugin->env->cls, (const struct sockaddr *) un, un_len); |
1257 | plugin->unix_sock.desc = | 1273 | plugin->unix_sock.desc = |
1258 | GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_DGRAM, 0); | 1274 | GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_DGRAM, 0); |