1
1

bind: Check for POLLRDHUP on the server if available

This is a feature on modern Linux.

Thanks to Ludovic Courtès <ludo@gnu.org> for the pointer.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Этот коммит содержится в:
Andreas Schneider 2019-01-14 11:32:28 +01:00
родитель 0e9add9a89
Коммит 86849c0883
2 изменённых файлов: 16 добавлений и 3 удалений

Просмотреть файл

@ -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) endif (WITH_SYMBOL_VERSIONING AND HAVE_LD_VERSION_SCRIPT AND ABIMAP_FOUND)
add_library(${LIBSSH_SHARED_LIBRARY} SHARED ${libssh_SRCS}) 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}) target_link_libraries(${LIBSSH_SHARED_LIBRARY} ${LIBSSH_LINK_LIBRARIES})
@ -348,7 +351,10 @@ install(
if (BUILD_STATIC_LIB) if (BUILD_STATIC_LIB)
add_library(${LIBSSH_STATIC_LIBRARY} STATIC ${libssh_SRCS}) 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) if (MSVC)
set(OUTPUT_SUFFIX static) set(OUTPUT_SUFFIX static)

Просмотреть файл

@ -345,11 +345,18 @@ static int ssh_bind_poll_callback(ssh_poll_handle sshpoll,
*/ */
ssh_poll_handle ssh_bind_get_poll(ssh_bind sshbind) ssh_poll_handle ssh_bind_get_poll(ssh_bind sshbind)
{ {
short events = POLLIN;
if (sshbind->poll) { if (sshbind->poll) {
return sshbind->poll; return sshbind->poll;
} }
#ifdef POLLRDHUP
events |= POLLRDHUP;
#endif /* POLLRDHUP */
sshbind->poll = ssh_poll_new(sshbind->bindfd, sshbind->poll = ssh_poll_new(sshbind->bindfd,
POLLIN, events,
ssh_bind_poll_callback, ssh_bind_poll_callback,
sshbind); sshbind);