diff options
author | Jeremy Allison <jra@samba.org> | 2001-09-10 22:54:57 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-09-10 22:54:57 +0000 |
commit | f8a4e20e70cb0f92f8c35b33e0aa5a0293b95638 (patch) | |
tree | c48c2ff4c2eb93bf348f0056d8ccdcb3b018f50c /source/lib/messages.c | |
parent | 9d53fa9ede9abf1f9cf33a63dc36be5d37419c15 (diff) | |
download | samba-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.c | 7 |
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")); } |