[SCM] Samba Shared Repository - branch v3-4-test updated
Karolin Seeger
kseeger at samba.org
Thu Oct 8 01:57:44 MDT 2009
The branch, v3-4-test has been updated
via 8ef4a18... s3:winbind: Only ever handle one event after a select call
from e3a41dd... Fix bug 6776 - Running overlapping Byte Lock test will core dump Samba daemon. Re-write core of POSIX locking logic. Jeremy.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test
- Log -----------------------------------------------------------------
commit 8ef4a183da8bdc9997c198678a931b111396c104
Author: Volker Lendecke <vl at samba.org>
Date: Wed Oct 7 14:06:53 2009 +0200
s3:winbind: Only ever handle one event after a select call
While handling an fd event, the situation with other fds can change. I've just
seen a winbind stuck in the accept() call on the privileged pipe. I can only
imagine this happen because under high load we first handled other requests and
meanwhile the client on the privileged pipe went away.
-----------------------------------------------------------------------
Summary of changes:
source3/winbindd/winbindd.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 7d89940..e98b799 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -1037,7 +1037,9 @@ static void process_loop(void)
int maxfd = 0, selret;
struct timeval timeout, ev_timeout;
- run_events(winbind_event_context(), 0, NULL, NULL);
+ if (run_events(winbind_event_context(), 0, NULL, NULL)) {
+ return;
+ }
/* Initialise fd lists for select() */
@@ -1091,7 +1093,9 @@ static void process_loop(void)
/* selret > 0 */
- run_events(winbind_event_context(), selret, &r_fds, &w_fds);
+ if (run_events(winbind_event_context(), selret, &r_fds, &w_fds)) {
+ return;
+ }
ev = fd_events;
while (ev != NULL) {
@@ -1101,8 +1105,10 @@ static void process_loop(void)
flags |= EVENT_FD_READ;
if (FD_ISSET(ev->fd, &w_fds))
flags |= EVENT_FD_WRITE;
- if (flags)
+ if (flags) {
ev->handler(ev, flags);
+ return;
+ }
ev = next;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list