diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 21e94488..d48ff258 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -300,7 +300,10 @@ if (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT AND ABIMAP_FOUND) endif (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT AND ABIMAP_FOUND) add_library(${LIBSSH_SHARED_LIBRARY} SHARED ${libssh_SRCS}) -target_compile_options(${LIBSSH_SHARED_LIBRARY} PRIVATE ${DEFAULT_C_COMPILE_FLAGS}) +target_compile_options(${LIBSSH_SHARED_LIBRARY} + PRIVATE + ${DEFAULT_C_COMPILE_FLAGS} + -D_GNU_SOURCE) target_link_libraries(${LIBSSH_SHARED_LIBRARY} ${LIBSSH_LINK_LIBRARIES}) @@ -348,7 +351,10 @@ install( if (BUILD_STATIC_LIB) add_library(${LIBSSH_STATIC_LIBRARY} STATIC ${libssh_SRCS}) - target_compile_options(${LIBSSH_STATIC_LIBRARY} PRIVATE ${DEFAULT_C_COMPILE_FLAGS}) + target_compile_options(${LIBSSH_STATIC_LIBRARY} + PRIVATE + ${DEFAULT_C_COMPILE_FLAGS} + -D_GNU_SOURCE) if (MSVC) set(OUTPUT_SUFFIX static) diff --git a/src/bind.c b/src/bind.c index a91b3ad8..4e28f774 100644 --- a/src/bind.c +++ b/src/bind.c @@ -345,11 +345,18 @@ static int ssh_bind_poll_callback(ssh_poll_handle sshpoll, */ ssh_poll_handle ssh_bind_get_poll(ssh_bind sshbind) { + short events = POLLIN; + if (sshbind->poll) { return sshbind->poll; } + +#ifdef POLLRDHUP + events |= POLLRDHUP; +#endif /* POLLRDHUP */ + sshbind->poll = ssh_poll_new(sshbind->bindfd, - POLLIN, + events, ssh_bind_poll_callback, sshbind);