]> git.sur5r.net Git - openldap/commitdiff
Implement keep alives. Probably should be a configuration option.
authorKurt Zeilenga <kurt@openldap.org>
Mon, 24 May 1999 21:57:26 +0000 (21:57 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 24 May 1999 21:57:26 +0000 (21:57 +0000)
servers/slapd/daemon.c

index 32485beb2681c066a98d666ca40471be98e24eae..b84ce2d18844735a12eddf2d57438a30995f1c27 100644 (file)
@@ -211,6 +211,7 @@ set_socket( struct sockaddr_in *addr )
                }
 #endif
 
+#ifdef SO_REUSEADDR
                tmp = 1;
                if ( setsockopt( tcps, SOL_SOCKET, SO_REUSEADDR,
                        (char *) &tmp, sizeof(tmp) ) == -1 )
@@ -222,6 +223,7 @@ set_socket( struct sockaddr_in *addr )
                                err > -1 && err < sys_nerr
                                        ? sys_errlist[err] : "unknown" );
                }
+#endif
 
                if ( bind( tcps, (struct sockaddr *) addr, sizeof(*addr) ) == -1 ) {
                        int err = errno;
@@ -280,7 +282,7 @@ slapd_daemon_task(
 
        while ( !slapd_shutdown ) {
                unsigned int i;
-               int ns, nfds;
+               int ns, nfds, tmp;
 
                fd_set                  readfds;
                fd_set                  writefds;
@@ -453,6 +455,21 @@ slapd_daemon_task(
                        }
 #endif /* HAVE_TCPD */
 
+
+#ifdef SO_KEEPALIVE
+                       tmp = 1;
+                       if ( setsockopt( tcps, SOL_SOCKET, SO_KEEPALIVE,
+                               (char *) &tmp, sizeof(tmp) ) == -1 )
+                       {
+                               int err = errno;
+                               Debug( LDAP_DEBUG_ANY,
+                                       "slapd(%d): setsockopt(KEEPALIVE) failed errno %d (%s)\n",
+                               tcps, err,
+                                       err > -1 && err < sys_nerr
+                                               ? sys_errlist[err] : "unknown" );
+                       }
+#endif
+
                        if( (id = connection_init(s, client_name, client_addr)) < 0 ) {
                                Debug( LDAP_DEBUG_ANY,
                                        "daemon: connection_init(%d, %s, %s) failed.\n",