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"); }