]> git.sur5r.net Git - openldap/commitdiff
ITS#6037: save/restore errno in signal handlers
authorHallvard Furuseth <hallvard@openldap.org>
Thu, 26 Mar 2009 22:11:06 +0000 (22:11 +0000)
committerHallvard Furuseth <hallvard@openldap.org>
Thu, 26 Mar 2009 22:11:06 +0000 (22:11 +0000)
servers/slapd/daemon.c

index f9606c928e899aaad03615bf7b88e3f3e1227aa7..a7a0bb2179d657933c3dee6f82a75d009a44f230 100644 (file)
@@ -2759,6 +2759,8 @@ sockdestroy( void )
 RETSIGTYPE
 slap_sig_shutdown( int sig )
 {
+       int save_errno = errno;
+
 #if 0
        Debug(LDAP_DEBUG_TRACE, "slap_sig_shutdown: signal %d\n", sig, 0, 0);
 #endif
@@ -2787,15 +2789,21 @@ slap_sig_shutdown( int sig )
 
        /* reinstall self */
        (void) SIGNAL_REINSTALL( sig, slap_sig_shutdown );
+
+       errno = save_errno;
 }
 
 RETSIGTYPE
 slap_sig_wake( int sig )
 {
+       int save_errno = errno;
+
        WAKE_LISTENER(1);
 
        /* reinstall self */
        (void) SIGNAL_REINSTALL( sig, slap_sig_wake );
+
+       errno = save_errno;
 }