summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2006-12-23 02:26:18 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:16:41 -0500
commitc04b94875082735cd6c083f7e62885700d297ef7 (patch)
tree23afaadc4854b9cb11618c572135ae6665372256
parentad325a7905ada39d2fa6093880113dc834b56a43 (diff)
downloadsamba-c04b94875082735cd6c083f7e62885700d297ef7.tar.gz
samba-c04b94875082735cd6c083f7e62885700d297ef7.tar.bz2
samba-c04b94875082735cd6c083f7e62885700d297ef7.zip
r20330: And here's the fix for the parent winbindd crashing
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 (This used to be commit 9b04ac0c8104d626697978697d4d8bae791a7edd)
-rw-r--r--source3/nsswitch/winbindd_dual.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/source3/nsswitch/winbindd_dual.c b/source3/nsswitch/winbindd_dual.c
index fc8a95dfc0..b72b7238b1 100644
--- a/source3/nsswitch/winbindd_dual.c
+++ b/source3/nsswitch/winbindd_dual.c
@@ -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;
}