aboutsummaryrefslogtreecommitdiff
path: root/src/util/network.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/network.c')
-rw-r--r--src/util/network.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/util/network.c b/src/util/network.c
index 90f8c8640..2c16fe8c9 100644
--- a/src/util/network.c
+++ b/src/util/network.c
@@ -343,7 +343,7 @@ socket_set_inheritable (const struct GNUNET_NETWORK_Handle *h)
343 * 343 *
344 * @param h the socket to make non-delaying 344 * @param h the socket to make non-delaying
345 */ 345 */
346static void 346static int
347socket_set_nosigpipe (const struct GNUNET_NETWORK_Handle *h) 347socket_set_nosigpipe (const struct GNUNET_NETWORK_Handle *h)
348{ 348{
349 int abs_value = 1; 349 int abs_value = 1;
@@ -352,7 +352,8 @@ socket_set_nosigpipe (const struct GNUNET_NETWORK_Handle *h)
352 setsockopt (h->fd, SOL_SOCKET, SO_NOSIGPIPE, 352 setsockopt (h->fd, SOL_SOCKET, SO_NOSIGPIPE,
353 (const void *) &abs_value, 353 (const void *) &abs_value,
354 sizeof (abs_value))) 354 sizeof (abs_value)))
355 LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "setsockopt"); 355 return GNUNET_SYSERR;
356 return GNUNET_OK;
356} 357}
357#endif 358#endif
358 359
@@ -444,7 +445,14 @@ initialize_network_handle (struct GNUNET_NETWORK_Handle *h,
444 return GNUNET_SYSERR; 445 return GNUNET_SYSERR;
445 } 446 }
446#ifdef DARWIN 447#ifdef DARWIN
447 socket_set_nosigpipe (h); 448 if (GNUNET_SYSERR == socket_set_nosigpipe (h))
449 {
450 eno = errno;
451 GNUNET_break (0);
452 GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (h));
453 errno = eno;
454 return GNUNET_SYSERR;
455 }
448#endif 456#endif
449 if ( (type == SOCK_STREAM) 457 if ( (type == SOCK_STREAM)
450#ifdef AF_UNIX 458#ifdef AF_UNIX