Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > media > main-src > by-pkgid > f2c9a24e570f82c24fd7074143d03478 > files > 16

nss_ldap-253-42.el5.src.rpm

If the child is blocking SIGPIPE, unblock it so that we can handle any that
get generated while we're tricking libldap into telling the server on the other
end of a dummy socket to close the connection.  Upstream #414.

diff -up nss_ldap/ldap-nss.c nss_ldap/ldap-nss.c
--- nss_ldap/ldap-nss.c	2009-12-07 20:57:33.000000000 -0500
+++ nss_ldap/ldap-nss.c	2009-12-07 20:58:56.000000000 -0500
@@ -532,8 +532,13 @@
 static void
 do_atfork_child (void)
 {
+  sigset_t unblock, mask;
   debug ("==> do_atfork_child");
+  sigemptyset(&unblock);
+  sigaddset(&unblock, SIGPIPE);
+  sigprocmask(SIG_UNBLOCK, &unblock, &mask);
   do_close_no_unbind ();
+  sigprocmask(SIG_SETMASK, &mask, NULL);
   _nss_ldap_leave ();
   debug ("<== do_atfork_child");
 }