r20330: And here's the fix for the parent winbindd crashing
authorJeremy Allison <jra@samba.org>
Sat, 23 Dec 2006 02:26:18 +0000 (02:26 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:16:41 +0000 (12:16 -0500)
after it's child died unexpectedly whilst the parent
was waiting for a reply. We need to clean up the request
we're not going to service, plus we still need to call
the continuation function with a "False" flag so it
can clean things up. Still testing this, but I think
I'm right.
Jeremy

source/nsswitch/winbindd_dual.c

index fc8a95dfc0c81804b103d2f61d444e0b37ea7d76..b72b7238b1f2698374e2dbe3a066e9f55737d8c0 100644 (file)
@@ -192,7 +192,12 @@ static void async_reply_recv(void *private_data, BOOL success)
 
        if (!success) {
                DEBUG(5, ("Could not receive async reply\n"));
+
+               cache_cleanup_response(child->pid);
+               DLIST_REMOVE(child->requests, state);
+
                state->response->result = WINBINDD_ERROR;
+               state->continuation(state->private_data, False);
                return;
        }