mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
Set TCP_NODELAY and SO_KEEPALIVE after every accept() as some accept()
implementations do not create new socket with all properties of listening socket.
This commit is contained in:
parent
bf1ee530ea
commit
bbae507a8f
@ -402,30 +402,6 @@ static Listener * open_listener( const char* url )
|
|||||||
(long) l.sl_sd, err, sock_errstr(err) );
|
(long) l.sl_sd, err, sock_errstr(err) );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef SO_KEEPALIVE
|
|
||||||
/* enable keep alives */
|
|
||||||
tmp = 1;
|
|
||||||
rc = setsockopt( l.sl_sd, SOL_SOCKET, SO_KEEPALIVE,
|
|
||||||
(char *) &tmp, sizeof(tmp) );
|
|
||||||
if ( rc == AC_SOCKET_ERROR ) {
|
|
||||||
int err = sock_errno();
|
|
||||||
Debug( LDAP_DEBUG_ANY,
|
|
||||||
"slapd(%ld): setsockopt(SO_KEEPALIVE) failed errno=%d (%s)\n",
|
|
||||||
(long) l.sl_sd, err, sock_errstr(err) );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef TCP_NODELAY
|
|
||||||
/* enable no delay */
|
|
||||||
tmp = 1;
|
|
||||||
rc = setsockopt( l.sl_sd, IPPROTO_TCP, TCP_NODELAY,
|
|
||||||
(char *)&tmp, sizeof(tmp) );
|
|
||||||
if ( rc == AC_SOCKET_ERROR ) {
|
|
||||||
int err = sock_errno();
|
|
||||||
Debug( LDAP_DEBUG_ANY,
|
|
||||||
"slapd(%ld): setsockopt(TCP_NODELAY) failed errno=%d (%s)\n",
|
|
||||||
(long) l.sl_sd, err, sock_errstr(err) );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_GETADDRINFO
|
#ifdef HAVE_GETADDRINFO
|
||||||
} /* sai->ai_family != AF_LOCAL */
|
} /* sai->ai_family != AF_LOCAL */
|
||||||
@ -666,6 +642,7 @@ slapd_daemon_task(
|
|||||||
void *ptr
|
void *ptr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
int rc, tmp;
|
||||||
int l;
|
int l;
|
||||||
time_t last_idle_check = slap_get_time();
|
time_t last_idle_check = slap_get_time();
|
||||||
time( &starttime );
|
time( &starttime );
|
||||||
@ -881,6 +858,31 @@ slapd_daemon_task(
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SO_KEEPALIVE
|
||||||
|
/* enable keep alives */
|
||||||
|
rc = setsockopt( s, SOL_SOCKET, SO_KEEPALIVE,
|
||||||
|
(char *) &tmp, sizeof(tmp) );
|
||||||
|
if ( rc == AC_SOCKET_ERROR ) {
|
||||||
|
int err = sock_errno();
|
||||||
|
Debug( LDAP_DEBUG_ANY,
|
||||||
|
"slapd(%ld): setsockopt(SO_KEEPALIVE) failed "
|
||||||
|
"errno=%d (%s)\n", (long) s, err, sock_errstr(err) );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef TCP_NODELAY
|
||||||
|
/* enable no delay */
|
||||||
|
tmp = 1;
|
||||||
|
rc = setsockopt( s, IPPROTO_TCP, TCP_NODELAY,
|
||||||
|
(char *)&tmp, sizeof(tmp) );
|
||||||
|
if ( rc == AC_SOCKET_ERROR ) {
|
||||||
|
int err = sock_errno();
|
||||||
|
Debug( LDAP_DEBUG_ANY,
|
||||||
|
"slapd(%ld): setsockopt(TCP_NODELAY) failed "
|
||||||
|
"errno=%d (%s)\n", (long) s, err, sock_errstr(err) );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef LDAP_DEBUG
|
#ifdef LDAP_DEBUG
|
||||||
ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex );
|
ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user