From ade5133f6d79a722bff5d7f66e00c2f4ed19e5dc Mon Sep 17 00:00:00 2001 From: "Schanzenbach, Martin" Date: Sat, 10 Aug 2019 21:41:05 +0200 Subject: make SO_NOSIGPIPE more prominent --- src/util/network.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/util') 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) * * @param h the socket to make non-delaying */ -static void +static int socket_set_nosigpipe (const struct GNUNET_NETWORK_Handle *h) { int abs_value = 1; @@ -352,7 +352,8 @@ socket_set_nosigpipe (const struct GNUNET_NETWORK_Handle *h) setsockopt (h->fd, SOL_SOCKET, SO_NOSIGPIPE, (const void *) &abs_value, sizeof (abs_value))) - LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "setsockopt"); + return GNUNET_SYSERR; + return GNUNET_OK; } #endif @@ -444,7 +445,14 @@ initialize_network_handle (struct GNUNET_NETWORK_Handle *h, return GNUNET_SYSERR; } #ifdef DARWIN - socket_set_nosigpipe (h); + if (GNUNET_SYSERR == socket_set_nosigpipe (h)) + { + eno = errno; + GNUNET_break (0); + GNUNET_break (GNUNET_OK == GNUNET_NETWORK_socket_close (h)); + errno = eno; + return GNUNET_SYSERR; + } #endif if ( (type == SOCK_STREAM) #ifdef AF_UNIX -- cgit v1.2.3