ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
DEFAULTSERVICES = topology hostlist dht nse mesh fs
-UNIXPATH = /tmp/gnunet-service-arm.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-arm.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
"setsockopt");
#endif
- if (GNUNET_NETWORK_socket_bind
- (sock, (const struct sockaddr *) sa, addr_len, 0) != GNUNET_OK)
+ if (GNUNET_OK !=
+ GNUNET_NETWORK_socket_bind (sock, (const struct sockaddr *) sa, addr_len))
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
_
#define BINARY "mockup-service"
-#define CFGFILENAME "test_arm_api_data.conf"
+#define CFGFILENAME "test_arm_api_data_copy.conf"
static const struct GNUNET_CONFIGURATION_Handle *cfg;
BINARY = gnunet-service-ats
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-ats.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-ats.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
BINARY = gnunet-service-consensus
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-consensus.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-consensus.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
BINARY = gnunet-service-core
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-core.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-core.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
# DISABLE_SOCKET_FORWARDING = NO
[datastore]
AUTOSTART = YES
-UNIXPATH = /tmp/gnunet-service-datastore.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-datastore.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
@UNIXONLY@ PORT = 2093
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
BUCKET_SIZE = 4
-UNIXPATH = /tmp/gnunet-service-dht.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-dht.sock
# This could be relaxed...
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
HOSTNAME = localhost
HOME = $SERVICEHOME
BINARY = gnunet-service-dns
-UNIXPATH = /tmp/gnunet-service-dns.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-dns.sock
# Access to this service can compromise all DNS queries in this
# system. Thus access should be restricted to the same UID.
return NULL;
}
sa->sa_family = af;
- if (GNUNET_OK != GNUNET_NETWORK_socket_bind (ret,
- sa,
- alen,
- 0))
- {
+ if (GNUNET_OK !=
+ GNUNET_NETWORK_socket_bind (ret,
+ sa,
+ alen))
+ {
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Could not bind to any port: %s\n"),
STRERROR (errno));
HOME = $SERVICEHOME
HOSTNAME = localhost
@UNIXONLY@ PORT = 2571
-UNIXPATH = /tmp/gnunet-service-dv.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-dv.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
# ACCEPT_FROM =
BINARY = gnunet-daemon-experimentation
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-daemon-experimentation.sock
+UNIXPATH = $SERVICEHOME/gnunet-daemon-experimentation.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
ISSUERS = TFRM29O2RQNKLVBQIGODJ6GD58LSQ2NM9TNFBC6N48BRJHQO38Q73N2OM3V4CLKDM6CILQV4CU8PMJDRG0FNB0PDI057DBRANMLPLRG
\ No newline at end of file
# (may improve anonymity, probably not a good idea if content_caching is NO)
CONTENT_PUSHING = YES
-UNIXPATH = /tmp/gnunet-service-fs.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-fs.sock
# Do we require users that want to access file-sharing to run this process
# (usually not a good idea)
HOSTNAME = localhost
HOME = $SERVICEHOME
BINARY = gnunet-service-gns
-UNIXPATH = /tmp/gnunet-service-gns.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-gns.sock
@UNIXONLY@PORT = 2102
ZONE_DIR = $SERVICEHOME/gns/
# Where is the certificate for the GNS proxy stored?
PROXY_CACERT = $SERVICEHOME/gns/gnsCAcert.pem
-PROXY_UNIXPATH = /tmp/gnunet-gns-proxy.sock
+PROXY_UNIXPATH = $SERVICEHOME/gnunet-gns-proxy.sock
[fcfsd]
if (GNUNET_OK !=
GNUNET_NETWORK_socket_bind (listen_socket4,
(struct sockaddr *) &v4,
- sizeof (v4),
- 0))
+ sizeof (v4)))
{
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind");
GNUNET_NETWORK_socket_close (listen_socket4);
if (GNUNET_OK !=
GNUNET_NETWORK_socket_bind (listen_socket6,
(struct sockaddr *) &v6,
- sizeof (v6),
- 0))
+ sizeof (v6)))
{
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind");
GNUNET_NETWORK_socket_close (listen_socket6);
BINARY = gnunet-service-identity
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-identity.unix
+UNIXPATH = $SERVICEHOME/gnunet-service-identity.unix
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
int doBlock);
-/**
- * Fail to bind if an address is already in use.
- */
-#define GNUNET_BIND_EXCLUSIVE 0x01
-
-
/**
* Bind a socket to a particular address.
*
* @param desc socket to bind
* @param address address to be bound
* @param address_len length of address
- * @param flags flags affecting bind behaviour
* @return #GNUNET_OK on success, #GNUNET_SYSERR otherwise
*/
int
GNUNET_NETWORK_socket_bind (struct GNUNET_NETWORK_Handle *desc,
const struct sockaddr *address,
- socklen_t address_len,
- int flags);
+ socklen_t address_len);
/**
* Close a socket.
BINARY = gnunet-service-lockmanager
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-lockmanager.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-lockmanager.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
BINARY = gnunet-service-mesh
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-mesh.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-mesh.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
REFRESH_CONNECTION_TIME = 5 min
BINARY = gnunet-service-multicast
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-multicast.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-multicast.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
# DISABLE_SOCKET_FORWARDING = NO
[namestore]
AUTOSTART = YES
-UNIXPATH = /tmp/gnunet-service-namestore.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-namestore.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
@UNIXONLY@ PORT = 2099
if ((ret->lsock == NULL) ||
(GNUNET_OK !=
GNUNET_NETWORK_socket_bind (ret->lsock, (const struct sockaddr *) &sa,
- sizeof (sa), 0)))
+ sizeof (sa))))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_
BINARY = gnunet-service-nse
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-nse.unix
+UNIXPATH = $SERVICEHOME/gnunet-service-nse.unix
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
PROOFFILE = $SERVICEHOME/.nse-proof
BINARY = gnunet-service-peerinfo
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-peerinfo.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-peerinfo.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
# DISABLE_SOCKET_FORWARDING = NO
AUTOSTART = YES
HOME = $SERVICEHOME
BINARY = gnunet-service-psyc
-UNIXPATH = /tmp/gnunet-service-psyc.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-psyc.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
AUTOSTART = YES
HOME = $SERVICEHOME
BINARY = gnunet-service-psycstore
-UNIXPATH = /tmp/gnunet-service-psycstore.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-psycstore.sock
@UNIXONLY@PORT = 2111
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
[regex]
AUTOSTART = YES
@UNIXONLY@ PORT = 2107
-UNIXPATH = /tmp/gnunet-service-regex.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-regex.sock
HOSTNAME = localhost
HOME = $SERVICEHOME
BINARY = gnunet-service-regex
[vectorproduct]
BINARY = gnunet-service-vectorproduct
-UNIXPATH = /tmp/gnunet-service-vectorproduct.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-vectorproduct.sock
HOME = $SERVICEHOME
# PORT = 2106
@UNIXONLY@ PORT = 2087
BINARY = gnunet-service-set
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-set.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-set.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
BINARY = gnunet-service-statistics
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-statistics.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-statistics.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
# DISABLE_SOCKET_FORWARDING = NO
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-testbed.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-testbed.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
@UNIXONLY@ PORT = 2102
HOSTNAME = localhost
BINARY = gnunet-service-testbed-logger
-UNIXPATH = /tmp/gnunet-gnunet-testbed-logger.sock
+UNIXPATH = $SERVICEHOME/gnunet-gnunet-testbed-logger.sock
DIR = /tmp
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
AUTOSTART = NO
@UNIXONLY@ PORT = 2103
HOSTNAME = localhost
-UNIXPATH = /tmp/gnunet-service-testbed-barrier.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-testbed-barrier.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES
continue;
bind_status = GNUNET_NETWORK_socket_bind (socket,
ai->ai_addr,
- ai->ai_addrlen,
- 0);
+ ai->ai_addrlen);
GNUNET_NETWORK_socket_close (socket);
if (GNUNET_OK != bind_status)
break;
continue;
bind_status = GNUNET_NETWORK_socket_bind (socket,
ai->ai_addr,
- ai->ai_addrlen,
- 0);
+ ai->ai_addrlen);
GNUNET_NETWORK_socket_close (socket);
if (GNUNET_OK != bind_status)
break;
return count;
}
+
/**
* Open the bluetooth interface for reading/writing
*
addr.btAddr = 0;
addr.port = BT_PORT_ANY;
- if (GNUNET_NETWORK_socket_bind (dev->handle, (const SOCKADDR*)&addr, sizeof (SOCKADDR_BTH), 0) != GNUNET_OK)
+ if (GNUNET_OK !=
+ GNUNET_NETWORK_socket_bind (dev->handle, (const SOCKADDR*)&addr, sizeof (SOCKADDR_BTH)))
{
fprintf (stderr, "Failed to bind the socket: ");
if (GetLastError() == WSAENETDOWN)
GNUNET_a2s (serverAddr, addrlen));
/* binding */
if (GNUNET_OK == GNUNET_NETWORK_socket_bind (plugin->sockv6,
- serverAddr, addrlen, 0))
+ serverAddr, addrlen))
break;
eno = errno;
if (0 != plugin->port)
/* binding */
if (GNUNET_OK == GNUNET_NETWORK_socket_bind (plugin->sockv4,
- serverAddr, addrlen, 0))
+ serverAddr, addrlen))
break;
eno = errno;
if (0 != plugin->port)
const void *sb;
size_t sbs;
struct sockaddr_un un;
- size_t slen;
const char *unix_path;
unix_path = (const char *) &addr[1];
memset (&un, 0, sizeof (un));
un.sun_family = AF_UNIX;
- slen = strlen (unix_path);
- if (slen >= sizeof (un.sun_path))
- slen = sizeof (un.sun_path) - 1;
- GNUNET_assert (slen < sizeof (un.sun_path));
- memcpy (un.sun_path, unix_path, slen);
- un.sun_path[slen] = '\0';
- slen = sizeof (struct sockaddr_un);
-#if LINUX
- un.sun_path[0] = '\0';
-#endif
+ strncpy (un.sun_path, unix_path, sizeof (un.sun_path) - 1);
#if HAVE_SOCKADDR_IN_SIN_LEN
- un.sun_len = (u_char) slen;
+ un.sun_len = (u_char) sizeof (struct sockaddr_un);
#endif
sb = (struct sockaddr *) &un;
- sbs = slen;
+ sbs = sizeof (struct sockaddr_un);
resend:
/* Send the data */
}
else
{
-#if LINUX
- un.sun_path[0] = '/';
-#endif
- LOG (GNUNET_ERROR_TYPE_DEBUG, "Read %d bytes from socket %s\n", ret,
- &un.sun_path[0]);
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Read %d bytes from socket %s\n",
+ (int) ret,
+ un.sun_path);
}
GNUNET_assert (AF_UNIX == (un.sun_family));
- ua_len = sizeof (struct UnixAddress) + strlen (&un.sun_path[0]) +1;
+ ua_len = sizeof (struct UnixAddress) + strlen (un.sun_path) + 1;
ua = GNUNET_malloc (ua_len);
ua->addrlen = htonl (strlen (&un.sun_path[0]) +1);
ua->options = htonl (0);
- memcpy (&ua[1], &un.sun_path[0], strlen (&un.sun_path[0]) +1);
+ memcpy (&ua[1], &un.sun_path[0], strlen (un.sun_path) + 1);
msg = (struct UNIXMessage *) buf;
csize = ntohs (msg->header.size);
* Create a slew of UNIX sockets. If possible, use IPv6 and IPv4.
*
* @param cls closure for server start, should be a struct Plugin *
- * @return number of sockets created or GNUNET_SYSERR on error
+ * @return number of sockets created or #GNUNET_SYSERR on error
*/
static int
unix_transport_server_start (void *cls)
struct sockaddr *serverAddr;
socklen_t addrlen;
struct sockaddr_un un;
- size_t slen;
memset (&un, 0, sizeof (un));
un.sun_family = AF_UNIX;
- slen = strlen (plugin->unix_socket_path) + 1;
- if (slen >= sizeof (un.sun_path))
- slen = sizeof (un.sun_path) - 1;
-
- memcpy (un.sun_path, plugin->unix_socket_path, slen);
- un.sun_path[slen] = '\0';
- slen = sizeof (struct sockaddr_un);
+ strncpy (un.sun_path, plugin->unix_socket_path, sizeof (un.sun_path) - 1);
#if HAVE_SOCKADDR_IN_SIN_LEN
- un.sun_len = (u_char) slen;
+ un.sun_len = (u_char) sizeof (struct sockaddr_un);
#endif
serverAddr = (struct sockaddr *) &un;
- addrlen = slen;
-#if LINUX
- un.sun_path[0] = '\0';
-#endif
+ addrlen = sizeof (struct sockaddr_un);
plugin->ats_network = plugin->env->get_address_type (plugin->env->cls, serverAddr, addrlen);
plugin->unix_sock.desc =
GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_DGRAM, 0);
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "socket");
return GNUNET_SYSERR;
}
- if (GNUNET_NETWORK_socket_bind (plugin->unix_sock.desc, serverAddr, addrlen, 0)
- != GNUNET_OK)
+ if (GNUNET_OK !=
+ GNUNET_NETWORK_socket_bind (plugin->unix_sock.desc, serverAddr, addrlen))
{
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind");
GNUNET_NETWORK_socket_close (plugin->unix_sock.desc);
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
PLUGINS = tcp udp
-UNIXPATH = /tmp/gnunet-service-transport.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-transport.sock
BLACKLIST_FILE = $SERVICEHOME/blacklist
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = YES
struct sockaddr_un s_un;
unixpath = NULL;
- if ((GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg, service_name, "UNIXPATH", &unixpath)) &&
+ if ((GNUNET_OK ==
+ GNUNET_CONFIGURATION_get_value_filename (cfg, service_name,
+ "UNIXPATH", &unixpath)) &&
(0 < strlen (unixpath)))
{
/* We have a non-NULL unixpath, need to validate it */
#if AF_UNIX
char *unixpath = NULL;
- if ((GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg, service_name, "UNIXPATH", &unixpath)) &&
+ if ((GNUNET_OK ==
+ GNUNET_CONFIGURATION_get_value_filename (cfg, service_name, "UNIXPATH", &unixpath)) &&
(0 < strlen (unixpath)))
ret = GNUNET_OK;
GNUNET_free_non_null (unixpath);
{
/* probe UNIX support */
struct sockaddr_un s_un;
- size_t slen;
char *unixpath;
unixpath = NULL;
- if ((GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg, service, "UNIXPATH", &unixpath)) && (0 < strlen (unixpath))) /* We have a non-NULL unixpath, does that mean it's valid? */
+ if ((GNUNET_OK ==
+ GNUNET_CONFIGURATION_get_value_filename (cfg, service, "UNIXPATH", &unixpath)) &&
+ (0 < strlen (unixpath))) /* We have a non-NULL unixpath, does that mean it's valid? */
{
if (strlen (unixpath) >= sizeof (s_un.sun_path))
{
{
memset (&s_un, 0, sizeof (s_un));
s_un.sun_family = AF_UNIX;
- slen = strlen (unixpath) + 1;
- if (slen >= sizeof (s_un.sun_path))
- slen = sizeof (s_un.sun_path) - 1;
- memcpy (s_un.sun_path, unixpath, slen);
- s_un.sun_path[slen] = '\0';
- slen = sizeof (struct sockaddr_un);
-#if LINUX
- s_un.sun_path[0] = '\0';
-#endif
+ strncpy (s_un.sun_path, unixpath, sizeof (s_un.sun_path) - 1);
#if HAVE_SOCKADDR_IN_SIN_LEN
- s_un.sun_len = (u_char) slen;
+ s_un.sun_len = (u_char) sizeof (struct sockaddr_un);
#endif
if (GNUNET_OK !=
GNUNET_NETWORK_socket_bind (sock, (const struct sockaddr *) &s_un,
- slen, GNUNET_BIND_EXCLUSIVE))
+ sizeof (struct sockaddr_un)))
{
/* failed to bind => service must be running */
GNUNET_free (unixpath);
{
if (GNUNET_OK !=
GNUNET_NETWORK_socket_bind (sock, (const struct sockaddr *) &s_in,
- sizeof (s_in), GNUNET_BIND_EXCLUSIVE))
+ sizeof (s_in)))
{
/* failed to bind => service must be running */
GNUNET_free (hostname);
{
if (GNUNET_OK !=
GNUNET_NETWORK_socket_bind (sock, (const struct sockaddr *) &s_in6,
- sizeof (s_in6), GNUNET_BIND_EXCLUSIVE))
+ sizeof (s_in6)))
{
/* failed to bind => service must be running */
GNUNET_free (hostname);
#ifdef AF_UNIX
struct GNUNET_CONNECTION_Handle *connection;
struct sockaddr_un *un;
- size_t slen;
GNUNET_assert (0 < strlen (unixpath)); /* sanity check */
un = GNUNET_new (struct sockaddr_un);
un->sun_family = AF_UNIX;
- slen = strlen (unixpath);
- if (slen >= sizeof (un->sun_path))
- slen = sizeof (un->sun_path) - 1;
- memcpy (un->sun_path, unixpath, slen);
- un->sun_path[slen] = '\0';
- slen = sizeof (struct sockaddr_un);
+ strncpy(un->sun_path, unixpath, sizeof(un->sun_path) - 1);
#if HAVE_SOCKADDR_IN_SIN_LEN
- un->sun_len = (u_char) slen;
-#endif
-#if LINUX
- un->sun_path[0] = '\0';
+ un->sun_len = (u_char) sizeof (struct sockaddr_un);
#endif
connection = GNUNET_new (struct GNUNET_CONNECTION_Handle);
connection->cfg = cfg;
connection->port = 0;
connection->hostname = NULL;
connection->addr = (struct sockaddr *) un;
- connection->addrlen = slen;
+ connection->addrlen = sizeof (struct sockaddr_un);
connection->sock = GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_STREAM, 0);
if (NULL == connection->sock)
{
/**
- * Create the directory structure for storing
- * a file.
+ * Create the directory structure for storing a file.
*
* @param filename name of a file in the directory
- * @returns GNUNET_OK on success,
- * GNUNET_SYSERR on failure,
- * GNUNET_NO if the directory
+ * @returns #GNUNET_OK on success,
+ * #GNUNET_SYSERR on failure,
+ * #GNUNET_NO if the directory
* exists but is not writeable for us
*/
int
/**
* Read the contents of a binary file into a buffer.
+ *
* @param h handle to an open file
* @param result the buffer to write the result to
* @param len the maximum number of bytes to read
- * @return the number of bytes read on success, GNUNET_SYSERR on failure
+ * @return the number of bytes read on success, #GNUNET_SYSERR on failure
*/
ssize_t
GNUNET_DISK_file_read (const struct GNUNET_DISK_FileHandle * h, void *result,
{
if (EAFNOSUPPORT == errno)
return GNUNET_NO;
- fprintf (stderr, "Failed to create test socket: %s\n", STRERROR (errno));
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Failed to create test socket: %s\n",
+ STRERROR (errno));
return GNUNET_SYSERR;
}
#if WINDOWS
* @param desc socket to bind
* @param address address to be bound
* @param address_len length of @a address
- * @param flags flags affecting bind behaviour
* @return #GNUNET_OK on success, #GNUNET_SYSERR otherwise
*/
int
GNUNET_NETWORK_socket_bind (struct GNUNET_NETWORK_Handle *desc,
const struct sockaddr *address,
- socklen_t address_len,
- int flags)
+ socklen_t address_len)
{
int ret;
socklen_t bind_address_len = address_len;
#ifdef LINUX
- if (address->sa_family == AF_UNIX)
+ if (AF_UNIX == address->sa_family)
{
const struct sockaddr_un *address_un = (const struct sockaddr_un *)address;
if (address_un->sun_path[0] == '\0')
&& (0 != setsockopt (desc->fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on))))
LOG_STRERROR (GNUNET_ERROR_TYPE_DEBUG, "setsockopt");
}
-#endif
-#ifndef LINUX
-#ifndef MINGW
- if (address->sa_family == AF_UNIX && (flags & GNUNET_BIND_EXCLUSIVE) == 0)
- {
- const struct sockaddr_un *un = (const struct sockaddr_un *) address;
-
- (void) unlink (un->sun_path);
- }
-#endif
#endif
ret = bind (desc->fd, address, bind_address_len);
#ifdef MINGW
if (ret != 0)
return GNUNET_SYSERR;
#ifndef MINGW
-#ifndef LINUX
desc->addr = GNUNET_malloc (address_len);
memcpy (desc->addr, address, address_len);
desc->addrlen = address_len;
-#endif
#endif
return GNUNET_OK;
}
#else
ret = close (desc->fd);
#endif
-#ifndef LINUX
#ifndef MINGW
if ((desc->af == AF_UNIX) && (NULL != desc->addr))
{
const struct sockaddr_un *un = (const struct sockaddr_un *) desc->addr;
if (0 != unlink (un->sun_path))
- LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "unlink", un->sun_path);
+ LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING,
+ "unlink",
+ un->sun_path);
}
-#endif
#endif
GNUNET_NETWORK_socket_free_memory_only_ (desc);
return (ret == 0) ? GNUNET_OK : GNUNET_SYSERR;
BINARY = gnunet-service-resolver
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-resolver.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-resolver.sock
UNIX_MATCH_UID = NO
UNIX_MATCH_GID = NO
# DISABLE_SOCKET_FORWARDING = NO
return NULL;
}
/* bind the socket */
- if (GNUNET_OK != GNUNET_NETWORK_socket_bind (sock, serverAddr, socklen, 0))
+ if (GNUNET_OK != GNUNET_NETWORK_socket_bind (sock, serverAddr, socklen))
{
eno = errno;
if (EADDRINUSE != errno)
{
#ifdef AF_UNIX
struct sockaddr_un *un;
- size_t slen;
un = GNUNET_malloc (sizeof (struct sockaddr_un));
un->sun_family = AF_UNIX;
- slen = strlen (unixpath) + 1;
- if (slen >= sizeof (un->sun_path))
- slen = sizeof (un->sun_path) - 1;
- memcpy (un->sun_path, unixpath, slen);
- un->sun_path[slen] = '\0';
- slen = sizeof (struct sockaddr_un);
-#if LINUX
- un->sun_path[0] = '\0';
-#endif
+ strncpy (un->sun_path, unixpath, sizeof (un->sun_path) - 1);
#if HAVE_SOCKADDR_IN_SIN_LEN
- un->sun_len = (u_char) slen;
+ un->sun_len = (u_char) sizeof (struct sockaddr_un);
#endif
*saddrs = (struct sockaddr *) un;
- *saddrlens = slen;
+ *saddrlens = sizeof (struct sockaddr_un);
#else
/* this function should never be called
* unless AF_UNIX is defined! */
if ((GNUNET_YES ==
GNUNET_CONFIGURATION_have_value (cfg, service_name, "UNIXPATH")) &&
(GNUNET_OK ==
- GNUNET_CONFIGURATION_get_value_string (cfg, service_name, "UNIXPATH",
- &unixpath)) &&
+ GNUNET_CONFIGURATION_get_value_filename (cfg, service_name, "UNIXPATH",
+ &unixpath)) &&
(0 < strlen (unixpath)))
{
/* probe UNIX support */
LOG (GNUNET_ERROR_TYPE_INFO,
_("Using `%s' instead\n"), unixpath);
}
+ if (GNUNET_OK !=
+ GNUNET_DISK_directory_create_for_file (unixpath))
+ GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR,
+ "mkdir",
+ unixpath);
}
if (NULL != unixpath)
{
if (GNUNET_NETWORK_socket_setsockopt
(desc, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) != GNUNET_OK)
GNUNET_log (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, "setsockopt");
- GNUNET_assert (GNUNET_NETWORK_socket_bind
- (desc, (const struct sockaddr *) &sa,
- sizeof (sa), 0) == GNUNET_OK);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_NETWORK_socket_bind (desc, (const struct sockaddr *) &sa,
+ sizeof (sa)));
GNUNET_NETWORK_socket_listen (desc, 5);
return desc;
}
GNUNET_log (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, "setsockopt");
if (GNUNET_OK !=
GNUNET_NETWORK_socket_bind (desc, (const struct sockaddr *) &sa,
- sizeof (sa), 0))
+ sizeof (sa)))
{
GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"bind");
if (GNUNET_NETWORK_socket_setsockopt
(desc, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) != GNUNET_OK)
GNUNET_log (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, "setsockopt");
- GNUNET_assert (GNUNET_NETWORK_socket_bind
- (desc, (const struct sockaddr *) &sa,
- sizeof (sa), 0) == GNUNET_OK);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_NETWORK_socket_bind (desc, (const struct sockaddr *) &sa,
+ sizeof (sa)));
GNUNET_NETWORK_socket_listen (desc, 5);
return desc;
}
if (GNUNET_NETWORK_socket_setsockopt
(desc, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) != GNUNET_OK)
GNUNET_log (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK, "setsockopt");
- GNUNET_assert (GNUNET_NETWORK_socket_bind
- (desc, (const struct sockaddr *) &sa,
- sizeof (sa), 0) == GNUNET_OK);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_NETWORK_socket_bind (desc, (const struct sockaddr *) &sa,
+ sizeof (sa)));
GNUNET_NETWORK_socket_listen (desc, 5);
return desc;
}
{
struct sockaddr_un un;
const char *unixpath = "/tmp/testsock";
- size_t slen = strlen (unixpath);
struct sockaddr *sap[2];
socklen_t slens[2];
memset (&un, 0, sizeof (un));
un.sun_family = AF_UNIX;
- memcpy (un.sun_path, unixpath, slen);
- un.sun_path[slen] = '\0';
+ strncpy(un.sun_path, unixpath, sizeof (un.sun_path) - 1);
#if HAVE_SOCKADDR_IN_SIN_LEN
un.sun_len = (u_char) sizeof (un);
#endif
-#if LINUX
- un.sun_path[0] = '\0';
-#endif
sap[0] = (struct sockaddr *) &un;
slens[0] = sizeof (un);
BINARY = gnunet-service-vpn
ACCEPT_FROM = 127.0.0.1;
ACCEPT_FROM6 = ::1;
-UNIXPATH = /tmp/gnunet-service-vpn.sock
+UNIXPATH = $SERVICEHOME/gnunet-service-vpn.sock
UNIX_MATCH_UID = YES
UNIX_MATCH_GID = YES