Edit

kc3-lang/libressl/apps/nc/compat/sys

Branch :

  • Show log

    Commit

  • Author : Sebastian Blunt
    Date : 2022-04-15 23:48:50
    Hash : fe903fb7
    Message : 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

  • socket.h
  • /*
     * Public domain
     * sys/socket.h compatibility shim
     */
    
    #ifndef _WIN32
    #include_next <sys/socket.h>
    
    #if defined(NEED_SOCKET_FLAGS)
    int _socket(int domain, int type, int protocol);
    #ifndef SOCKET_FLAGS_PRIV
    #define socket(d, t, p) _socket(d, t, p)
    #endif
    #endif
    
    #ifndef SOCK_NONBLOCK
    #define	SOCK_NONBLOCK		0x4000	/* set O_NONBLOCK */
    #endif
    
    #ifndef SOCK_CLOEXEC
    #define	SOCK_CLOEXEC		0x8000	/* set FD_CLOEXEC */
    #endif
    
    #ifndef HAVE_ACCEPT4
    int accept4(int s, struct sockaddr *addr, socklen_t *addrlen, int flags);
    #endif
    
    #else
    #include <win32netcompat.h>
    #endif