aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/plugin_transport_unix.c22
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
386static struct sockaddr_un * 386static struct sockaddr_un *
387unix_address_to_sockaddr (const char *unixpath, 387unix_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);