diff options
author | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2019-08-10 21:41:05 +0200 |
---|---|---|
committer | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2019-08-10 21:41:05 +0200 |
commit | ade5133f6d79a722bff5d7f66e00c2f4ed19e5dc (patch) | |
tree | fef7de0a74f15a6c673b2bfc50474be88e724d01 /src/util | |
parent | 184835987950b119bb2057aa8b1f4133a4a480c1 (diff) | |
download | gnunet-ade5133f6d79a722bff5d7f66e00c2f4ed19e5dc.tar.gz gnunet-ade5133f6d79a722bff5d7f66e00c2f4ed19e5dc.zip |
make SO_NOSIGPIPE more prominent
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/network.c | 14 |
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 | */ |
346 | static void | 346 | static int |
347 | socket_set_nosigpipe (const struct GNUNET_NETWORK_Handle *h) | 347 | socket_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 |