diff options
author | Sebastian Blunt <git@sebastianblunt.com> | 2022-04-15 23:48:50 -0700 |
---|---|---|
committer | Sebastian Blunt <git@sebastianblunt.com> | 2022-04-15 23:59:33 -0700 |
commit | fe903fb7c59600f7679b2afb0d33f4a0c3f93ae2 (patch) | |
tree | a260fe6ecba14ce33ce0892ee0bef3e8bd88eb50 /include | |
parent | b2c59887a2eeb74d331e3321e0de9e154cb8be13 (diff) | |
download | portable-fe903fb7c59600f7679b2afb0d33f4a0c3f93ae2.tar.gz portable-fe903fb7c59600f7679b2afb0d33f4a0c3f93ae2.tar.bz2 portable-fe903fb7c59600f7679b2afb0d33f4a0c3f93ae2.zip |
Fix unreachable nc portability shim
This fixes nc failing to run on darwin due to it incorrectly setting the
linux-specific SOCK_NONBLOCK flag on connect.
nc already had a portability shim in apps/nc/compat/sys/socket.h, which
kicks in if SOCK_NONBLOCK is undefined. But that header includes
include/compat/sys/socket.h, which also has a portability shim that
defines a default value for SOCK_NONBLOCK if it's undefined. Thus the
first portability shim was unreachable.
Fixes this by moving the NEED_SOCKET_FLAGS flag into the outer shim, and
having the inner shim activate if NEED_SOCKET_FLAGS is defined.
This closes https://github.com/libressl-portable/portable/issues/631
Diffstat (limited to 'include')
-rw-r--r-- | include/compat/sys/socket.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/compat/sys/socket.h b/include/compat/sys/socket.h index 10eb05f..2f0b197 100644 --- a/include/compat/sys/socket.h +++ b/include/compat/sys/socket.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #endif | 10 | #endif |
11 | 11 | ||
12 | #if !defined(SOCK_NONBLOCK) || !defined(SOCK_CLOEXEC) | 12 | #if !defined(SOCK_NONBLOCK) || !defined(SOCK_CLOEXEC) |
13 | #define NEED_SOCKET_FLAGS | ||
13 | #define SOCK_CLOEXEC 0x8000 /* set FD_CLOEXEC */ | 14 | #define SOCK_CLOEXEC 0x8000 /* set FD_CLOEXEC */ |
14 | #define SOCK_NONBLOCK 0x4000 /* set O_NONBLOCK */ | 15 | #define SOCK_NONBLOCK 0x4000 /* set O_NONBLOCK */ |
15 | int bsd_socketpair(int domain, int type, int protocol, int socket_vector[2]); | 16 | int bsd_socketpair(int domain, int type, int protocol, int socket_vector[2]); |