summaryrefslogtreecommitdiffstats
path: root/source/nsswitch
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
commit9b04ac0c8104d626697978697d4d8bae791a7edd (patch)
tree291a9bcf23a538ce6487d4fbe73f2c3e28dd114f /source/nsswitch
parenta0278a0cb062500ba97e237d02f55855b68719ec (diff)
downloadsamba-9b04ac0c8104d626697978697d4d8bae791a7edd.tar.gz
samba-9b04ac0c8104d626697978697d4d8bae791a7edd.tar.xz
samba-9b04ac0c8104d626697978697d4d8bae791a7edd.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
Diffstat (limited to 'source/nsswitch')
-rw-r--r--source/nsswitch/winbindd_dual.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/nsswitch/winbindd_dual.c b/source/nsswitch/winbindd_dual.c
index fc8a95dfc0c..b72b7238b1f 100644
--- a/source/nsswitch/winbindd_dual.c
+++ b/source/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;
}