summaryrefslogtreecommitdiff
path: root/source3/lib/events.c
AgeCommit message (Collapse)AuthorFilesLines
2010-10-01s3:events: Call all ready fd event handlers on each iteration of the main loopSteven Danneman1-7/+15
Previously, only one fd handler was being called per main message loop in all smbd child processes. In the case where multiple fds are available for reading the fd corresponding to the event closest to the beginning of the event list would be run. Obviously this is arbitrary and could cause unfairness. Usually, the first event fd is the network socket, meaning heavy load of client requests can starve out other fd events such as oplock or notify upcalls from the kernel. In this patch, I have changed the behavior of run_events() to unset any fd that it has already called a handler function, as well as decrement the number of fds that were returned from select(). This allows the caller of run_events() to iterate it, until all available fds have been handled. I then changed the main loop in smbd child processes to iterate run_events(). This way, all available fds are handled on each wake of select, while still checking for timed or signalled events between each handler function call. I also added an explicit check for EINTR from select(), which previously was masked by the fact that run_events() would handle any signal event before the return code was checked. This required a signature change to run_events() but all other callers should have no change in their behavior. I also fixed a bug in run_events() where it could be called with a selrtn value of -1, doing unecessary looping through the fd_event list when no fds were available. Also, remove the temporary echo handler hack, as all fds should be treated fairly now.
2010-10-01samba: share select wrappers.Günther Deschner1-0/+1
Guenther
2010-03-26s3-event: switch s3 to using tevent_re_initialise()Andrew Tridgell1-6/+0
This correctly initialises the event backend, and checks for errors (thanks to Metze for suggesting this)
2010-03-14s3: Remove some unused codeVolker Lendecke1-20/+0
2010-02-05s3-events: make the old timed events compatible with teventAndrew Tridgell1-2/+19
tevent ensures that a timed event is only called once. The old events code relied on the called handler removing the event itself. If the handler removed the event after calling a function which invoked the event loop then the timed event could loop forever. This change makes the two timed event systems more compatible, by allowing the handler to free the te if it wants to, but ensuring it is off the linked list of events before the handler is called, and ensuring it is freed even if the handler doesn't free it.
2009-07-10Quieten events and tldap debug messagesVolker Lendecke1-1/+1
2009-05-17s3-events: Not only timed, also immediate events generate a timeout returnVolker Lendecke1-1/+1
2009-05-16s3-events: If immediate requests are pending, the timeout is 0Volker Lendecke1-0/+9
2009-03-17s3:events: add support for immediate eventsStefan Metzmacher1-9/+15
metze
2009-03-17s3:events: make use of tevent_common_loop_wait()Stefan Metzmacher1-12/+1
metze
2009-03-12s3:events: pass __location__ to event_loop_*()Stefan Metzmacher1-3/+3
metze
2009-03-03Fix "ignore return" warning.Jeremy Allison1-2/+3
Jeremy.
2009-02-25s3:events: map TEVENT_DEBUG_TRACE to debug level 10Stefan Metzmacher1-1/+1
metze
2009-01-28Avoid valgrind errorsVolker Lendecke1-35/+13
In event handlers, we might destroy other events that are pending in the lists. We can only run one event safely per select call. Yes, I've seen these valgrind errors :-) Jeremy, with ccdd921e61 you had checked in the change to run multiple events. Do you remember why it was necessary and could not be solved in a different way? Volker
2009-01-22s3:events: always run_events() before sys_select()Stefan Metzmacher1-5/+4
We might have pending signal events not only timed events. metze
2009-01-20s3:events: add support for signal eventsStefan Metzmacher1-0/+6
metze
2009-01-09s3:events: debug sys_select() errorsStefan Metzmacher1-0/+3
metze
2009-01-09s3:events: install a tevent debug handler that calls DEBUG()Stefan Metzmacher1-1/+42
metze
2009-01-05s3:events: use more tevent_common_* functionsStefan Metzmacher1-158/+6
metze
2009-01-05s3:events: register as tevent backendStefan Metzmacher1-137/+172
metze
2009-01-05s3:events: get rid of the stupid set_event_dispatch_time() functionStefan Metzmacher1-16/+0
metze
2009-01-05s3:events: get rid of the stupid cancel_named_event() functionStefan Metzmacher1-16/+0
metze
2009-01-05s3:events: change event_add_timed() prototype to match samba4Stefan Metzmacher1-4/+4
metze
2009-01-05s3:events: remove unused stuffStefan Metzmacher1-25/+0
metze
2009-01-05clean event context after child is forked.Bo Yang1-0/+6
Signed-off-by: Stefan Metzmacher <metze@samba.org>
2008-10-11Cope with changed signature of http_timestring().Jelmer Vernooij1-1/+1
2008-08-10Make events robust against their event_context being freedVolker Lendecke1-5/+28
(This used to be commit 3d4e7b29c235e329aaea4fa2c2078df0ce3e59eb)
2008-06-11Fix max_fd calculation in event_loop_onceVolker Lendecke1-1/+1
For some bugs I really wonder how they can go undetected for so long. Fix a bug reported by Mathias Dietz. No samba bugzilla entry, but still 100% needed for 3-2-stable. Volker (cherry picked from commit 82c994dabc47bb4755c883a1f3651bb5d65cf2c5) (This used to be commit 91c73e093a03b10426b671cb3e1dffb8a2455d47)
2008-05-28lib/events: use mem_context given to event_context_init().Michael Adam1-1/+1
Michael (This used to be commit f872a1f4428ed64bcfd832d981eea6446f05339e)
2008-04-14Enable multiple fd events on a single file descriptorVolker Lendecke1-1/+1
Now we can have multiple events listen on a single fd. The order in which they are called is naturally not defined, meaning that it is only deterministic if exactly one event is readable or writeable. (This used to be commit 61503f822b60f98dd1f7549707ec89b48e32caeb)
2007-10-18RIP BOOL. Convert BOOL -> bool. I found a few interestingJeremy Allison1-5/+5
bugs in various places whilst doing this (places that assumed BOOL == int). I also need to fix the Samba4 pidl generation (next checkin). Jeremy. (This used to be commit f35a266b3cbb3e5fa6a86be60f34fe340a3ca71f)
2007-10-10r25257: When dumping eventlist, display full timestring.Günther Deschner1-2/+3
Guenther (This used to be commit 38eca60913f513accb24b31dcb6d1d7e92b0ba66)
2007-10-10r23784: use the GPLv3 boilerplate as recommended by the FSF and the license textAndrew Tridgell1-2/+1
(This used to be commit b0132e94fc5fef936aa766fb99a306b3628e9f07)
2007-10-10r23779: Change from v2 or later to v3 or later.Jeremy Allison1-1/+1
Jeremy. (This used to be commit 407e6e695b8366369b7c76af1ff76869b45347b3)
2007-10-10r23569: Also dump fd_event in dump_event_list().Günther Deschner1-1/+10
Guenther (This used to be commit 27fdf995d13611ebc9e57895f886c184e9027c4d)
2007-10-10r23562: Add dump_event_list() for debugging the event list.Günther Deschner1-0/+24
Guenther (This used to be commit 4e1e697ac48513719bd3a2152f17871bc00df796)
2007-10-10r23015: Make message_(de)register static to messages.cVolker Lendecke1-0/+15
(This used to be commit a8082a3c7c3d1e68c27fc3bf42f3d44402cc6f9f)
2007-10-10r22934: Change smbcontrol to use messaging_register instead of message_registerVolker Lendecke1-2/+45
(This used to be commit e3d985c581ffc597aea932858d27c421643d2868)
2007-10-10r20913: Fix the build.Jeremy Allison1-3/+4
Jeremy. (This used to be commit dce98dae2d18126d8380f92595f315b96d48a7df)
2007-10-10r20912: Ensure the list always remains sorted even whenJeremy Allison1-17/+29
moving events around. Jeremy. (This used to be commit 6fee874ab420b4c406e38b5e189a6d6ea8594fc9)
2007-10-10r20846: Before this gets out of control...Volker Lendecke1-22/+197
This add a struct event_context and infrastructure for fd events to smbd. This is step zero to import lib/events. Jeremy, I rely on you to watch the change in receive_message_or_smb() closely. For the normal code path this should be the only relevant change. The rest is either not yet used or is cosmetic. Volker (This used to be commit cd07f93a8aecb24c056e33b1ad3447a41959810f)
2007-10-10r20087: Ensure we clean up any random pending events weJeremy Allison1-0/+15
may have inherited from our parent in the winbindd forked child. Jeremy. (This used to be commit 0a1352f440a9d9b974ad8d571b2e48a43a15b6cc)
2007-10-10r18473: Once we go online, trigger a "get krb5 ticket event"Jeremy Allison1-1/+16
immediately if we were waiting on one. Jeremy. (This used to be commit 6dc8f9042f057e1f9aff46042a0fe697cb8a912c)
2007-10-10r18191: Fix the online/offline state handling of winbindd.Jeremy Allison1-17/+14
Instead of trying to do this in the winbindd_cache entries, add a timed even handler to probe every 5 mins when disconnected. Fix events to run all pending events, rather than only one. Jeremy. (This used to be commit 7bfbe1b4fb9a91c6678035f220bbf0b4f5afdcac)
2007-10-10r17924: Get rid of warnings now that talloc is merged.Volker Lendecke1-2/+1
Destructors now take a pointer to the "real" destroyed object as an argument. Volker (This used to be commit 70edd716ef0ccb218fe18d1233bd30abe46b62bf)
2007-10-10r15084: Try and squeeze more out of the non-read/write code path.Jeremy Allison1-6/+2
Jeremy. (This used to be commit 23dcff4d50d1d35b7ddee0d0cb79c16a312f179c)
2007-10-10r13571: Replace all calls to talloc_free() with thye TALLOC_FREE()Gerald Carter1-2/+2
macro which sets the freed pointer to NULL. (This used to be commit b65be8874a2efe5a4b167448960a4fcf6bd995e2)
2007-10-10r13409: No functional changes, just some DEBUG cleanup.Günther Deschner1-2/+2
Guenther (This used to be commit 286f6fc2339cf4ef232c16466b8dffdcddbe343f)
2007-10-10r13316: Let the carnage begin....Gerald Carter1-0/+125
Sync with trunk as off r13315 (This used to be commit 17e63ac4ed8325c0d44fe62b2442449f3298559f)