Added support for TCP Keepalive.
This commit is contained in:
parent
156edf5cba
commit
baec395c8c
@ -975,6 +975,8 @@ CHECK_FUNCTION_EXISTS(gettid VMIME_HAVE_GETTID)
|
|||||||
CHECK_FUNCTION_EXISTS(syscall VMIME_HAVE_SYSCALL)
|
CHECK_FUNCTION_EXISTS(syscall VMIME_HAVE_SYSCALL)
|
||||||
CHECK_SYMBOL_EXISTS(SYS_gettid sys/syscall.h VMIME_HAVE_SYSCALL_GETTID)
|
CHECK_SYMBOL_EXISTS(SYS_gettid sys/syscall.h VMIME_HAVE_SYSCALL_GETTID)
|
||||||
|
|
||||||
|
CHECK_SYMBOL_EXISTS(SO_KEEPALIVE sys/socket.h VMIME_HAVE_SO_KEEPALIVE)
|
||||||
|
|
||||||
FIND_PACKAGE(Threads)
|
FIND_PACKAGE(Threads)
|
||||||
|
|
||||||
IF(VMIME_BUILD_SHARED_LIBRARY)
|
IF(VMIME_BUILD_SHARED_LIBRARY)
|
||||||
|
@ -84,6 +84,7 @@ typedef unsigned @VMIME_64BIT_TYPE@ vmime_uint64;
|
|||||||
#cmakedefine01 VMIME_HAVE_LOCALTIME_S
|
#cmakedefine01 VMIME_HAVE_LOCALTIME_S
|
||||||
#cmakedefine01 VMIME_HAVE_LOCALTIME_R
|
#cmakedefine01 VMIME_HAVE_LOCALTIME_R
|
||||||
#cmakedefine01 VMIME_HAVE_MLANG
|
#cmakedefine01 VMIME_HAVE_MLANG
|
||||||
|
#cmakedefine01 VMIME_HAVE_SO_KEEPALIVE
|
||||||
#cmakedefine01 VMIME_SHARED_PTR_USE_CXX
|
#cmakedefine01 VMIME_SHARED_PTR_USE_CXX
|
||||||
#cmakedefine01 VMIME_SHARED_PTR_USE_BOOST
|
#cmakedefine01 VMIME_SHARED_PTR_USE_BOOST
|
||||||
|
|
||||||
|
@ -138,6 +138,16 @@ void posixSocket::connect(const vmime::string& address, const vmime::port_t port
|
|||||||
continue; // try next
|
continue; // try next
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if VMIME_HAVE_SO_KEEPALIVE
|
||||||
|
|
||||||
|
// Enable TCP Keepalive
|
||||||
|
int keepAlive_optval = 1;
|
||||||
|
socklen_t keepAlive_optlen = sizeof(keepAlive_optval);
|
||||||
|
|
||||||
|
::setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &keepAlive_optval, keepAlive_optlen);
|
||||||
|
|
||||||
|
#endif // VMIME_HAVE_SO_KEEPALIVE
|
||||||
|
|
||||||
if (m_timeoutHandler != NULL)
|
if (m_timeoutHandler != NULL)
|
||||||
{
|
{
|
||||||
::fcntl(sock, F_SETFL, ::fcntl(sock, F_GETFL) | O_NONBLOCK);
|
::fcntl(sock, F_SETFL, ::fcntl(sock, F_GETFL) | O_NONBLOCK);
|
||||||
|
Loading…
Reference in New Issue
Block a user