summaryrefslogtreecommitdiffstats
path: root/source/lib/messages.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-09-10 22:54:57 +0000
committerJeremy Allison <jra@samba.org>2001-09-10 22:54:57 +0000
commitf8a4e20e70cb0f92f8c35b33e0aa5a0293b95638 (patch)
treec48c2ff4c2eb93bf348f0056d8ccdcb3b018f50c /source/lib/messages.c
parent9d53fa9ede9abf1f9cf33a63dc36be5d37419c15 (diff)
downloadsamba-f8a4e20e70cb0f92f8c35b33e0aa5a0293b95638.tar.gz
samba-f8a4e20e70cb0f92f8c35b33e0aa5a0293b95638.tar.xz
samba-f8a4e20e70cb0f92f8c35b33e0aa5a0293b95638.zip
Nailed the "oplock hang" problem. Found the logic bug. It was an
optimisation someone... :-) added to process an incoming smbd if both the oplock fd and server fd because active simultaneously. This of course is wrong as processing the oplock break message can involve I/O on the server fd which makes the stored FD_SET state completely bogus. Also added debug 10 messages I will remove once Gerry has confirmed the fix. Jeremy.
Diffstat (limited to 'source/lib/messages.c')
-rw-r--r--source/lib/messages.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source/lib/messages.c b/source/lib/messages.c
index ac8ce7399bc..0ff09032100 100644
--- a/source/lib/messages.c
+++ b/source/lib/messages.c
@@ -298,17 +298,24 @@ void message_dispatch(void)
size_t len;
struct dispatch_fns *dfn;
+ /* JRATEMP */
+ DEBUG(10,("message_dispatch: received_signal = %d\n", received_signal));
+
if (!received_signal) return;
received_signal = 0;
while (message_recv(&msg_type, &src, &buf, &len)) {
for (dfn = dispatch_fns; dfn; dfn = dfn->next) {
if (dfn->msg_type == msg_type) {
+ DEBUG(10,("message_dispatch: processing message.\n"));
dfn->fn(msg_type, src, buf, len);
}
}
if (buf) free(buf);
}
+
+ /* JRATEMP */
+ DEBUG(10,("message_dispatch: exit\n"));
}