summaryrefslogtreecommitdiff
path: root/source4/lib/events.c
AgeCommit message (Collapse)AuthorFilesLines
2007-10-10r5105: removed some unused events functions. These are no longer needed asAndrew Tridgell1-30/+0
destructors are used to remove pending socket events (This used to be commit ce62105434ab02e94e38897409c3512905c48f02)
2007-10-10r5104: - added support for task based servers. These are servers that withinAndrew Tridgell1-26/+0
themselves are run as a single process, but run as a child of the main process when smbd is run in the standard model, and run as part of the main process when in the single mode. - rewrote the winbind template code to use the new task services. Also fixed the packet queueing - got rid of event_context_merge() as it is no longer needed (This used to be commit 339964a596689278d2138cff05d7d444798a3504)
2007-10-10r4954: we don't need the separate event_remove_*() calls any more, as you nowAndrew Tridgell1-36/+2
remove an event by calling talloc_free(). (This used to be commit 8f19b6886cc58a56d52aecfc83a175197061e533)
2007-10-10r4944: every event_add_*() caller was having to call talloc_steal() to takeAndrew Tridgell1-3/+15
control of the event, so instead build that into the function. If you pass NULL as mem_ctx then it leaves it as a child of the events structure. (This used to be commit 7f981b9ed96f39027cbfd500f41e0c2be64cbb50)
2007-10-10r4943: Smplified the events handling code a lot. The first source ofAndrew Tridgell1-85/+85
complexity was that events didn't automatically cleanup themselves. This was because the events code was written before we had talloc destructors, so you needed to call event_remove_XX() to clean the event out of the event lists from every piece of code that used events. I have now added automatic event destructors, which in turn allowed me to simplify a lot of the calling code. The 2nd source of complexity was caused by the ref_count, which was needed to cope with event handlers destroying events while handling them, which meant the linked lists became invalid, so the ref_count ws used to mark events for later destruction. The new system is much simpler. I now have a ev->destruction_count, which is incremented in all event destructors. The event dispatch code checks for changes to this and handles it. (This used to be commit a3c7417cfeab429ffb22d5546b205818f531a7b4)
2007-10-10r4756: a slight tidy up in the events codeAndrew Tridgell1-4/+1
(This used to be commit d2f76c3671df0b0232982e2fbfd5c049c9fb674f)
2007-10-10r4547: - added talloc_new(ctx) macro that is a neater form of the common ↵Andrew Tridgell1-1/+1
talloc(ctx, 0) call. - cleaned up some talloc usage in various files I'd like to get to the point that we have no calls to talloc(), at which point we will rename talloc_p() to talloc(), to encourage everyone to use the typesafe functions. (This used to be commit e6c81d7c9f8a6938947d3c1c8a971a0d6d50b67a)
2007-10-10r3507: - added deferred replies on sharing violation in pvfs open. TheAndrew Tridgell1-15/+8
deferred reply is short-circuited immediately when the file is closed by another user, allowing it to be opened by the waiting user. - added a sane set of timeval manipulation routines - converted all the events code and code that uses it to use struct timeval instead of time_t, which allows for microsecond resolution instead of 1 second resolution. This was needed for doing the pvfs deferred open code, and is why the patch is so big. (This used to be commit 0d51511d408d91eb5f68a35e980e0875299b1831)
2007-10-10r3481: split out client.h and events.hAndrew Tridgell1-0/+1
(This used to be commit c6f486574470a311e0d336c026103f131451e21e)
2007-10-10r3463: separated out some more headers (asn_1.h, messages.h, dlinklist.h and ↵Andrew Tridgell1-0/+1
ioctl.h) (This used to be commit b97e395c814762024336c1cf4d7c25be8da5813a)
2007-10-10r3447: more include/system/XXX.h include filesAndrew Tridgell1-0/+2
(This used to be commit 264ce9181089922547e8f6f67116f2d7277a5105)
2007-10-10r3028: use talloc_free() instead of talloc_unlink(), as theAndrew Tridgell1-3/+3
event_context_merge() code leaves the events as grandchildren of the events context, not children, so talloc_unlink() will not work after the merge (This used to be commit 2d0dfe607dcfb522669d6fb3d566cf121d84274a)
2007-10-10r3017: nicer memory handling for event_context_merge()Andrew Tridgell1-15/+10
(This used to be commit 1cef44505e5de9b8ae5206522b624082ad2343b2)
2007-10-10r3016: - converted the events code to tallocAndrew Tridgell1-37/+9
- added the new messaging system, based on unix domain sockets. It gets over 10k messages/second on my laptop without any socket cacheing, which is better than I expected. - added a LOCAL-MESSAGING torture test (This used to be commit 3af06478da7ab34a272226d8d9ac87e0a4940cfb)
2007-10-10r2441: set exit code correct when we got EBADF from select()Stefan Metzmacher1-0/+1
metze (This used to be commit 36bf2f3eaf2e7568563cd98dc941d20f4574d271)
2007-10-10r2319: let event_merge_contexts() return a pointer to the final contextStefan Metzmacher1-1/+3
metze (This used to be commit 71aa5eeea73ea42e04ae224914b6815d72c1690a)
2007-10-10r2283: Change from tridge (in his ntlm2 patch).Andrew Bartlett1-3/+7
I think the idea here is to bail out correctly when we get signing broken on TCP, rather than keeping on hammering the socket. Andrew Bartlett (This used to be commit 553b529a0991ccf2f1be14cc6a27695223f02e65)
2007-10-10r2100: rework the dcerpc client side library so that it is async. We nowAndrew Tridgell1-1/+1
generate a separate *_send() async function for every RPC call, and there is a single dcerpc_ndr_request_recv() call that processes the receive side of any rpc call. The caller can use dcerpc_event_context() to get a pointer to the event context for the pipe so that events can be waited for asynchronously. The only part that remains synchronous is the initial bind calls. These could also be made async if necessary, although I suspect most applications won't need them to be. (This used to be commit f5d004d8eb8c76c03342cace1976b27266cfa1f0)
2007-10-10r1578: the first stage of the async client rewrite.Andrew Tridgell1-135/+209
Up to now the client code has had an async API, and operated asynchronously at the packet level, but was not truly async in that it assumed that it could always write to the socket and when a partial packet came in that it could block waiting for the rest of the packet. This change makes the SMB client library full async, by adding a separate outgoing packet queue, using non-blocking socket IO and having a input buffer that can fill asynchonously until the full packet has arrived. The main complexity was in dealing with the events structure when using the CIFS proxy backend. In that case the same events structure needs to be used in both the client library and the main smbd server, so that when the client library is waiting for a reply that the main server keeps processing packets. This required some changes in the events library code. Next step is to make the generated rpc client code use these new capabilities. (This used to be commit 96bf4da3edc4d64b0f58ef520269f3b385b8da02)
2007-10-10r1517: change event_remove_timed() to remove by structure not by handler.Andrew Tridgell1-3/+1
this fixes a crash bug in smbd with multiple RPC clients (This used to be commit 6e102f732e4404fc5f9b2851d12b00d2d083b43d)
2007-10-10r889: convert samba4 to use [u]int16_t instead of [u]int16Stefan Metzmacher1-1/+1
metze (This used to be commit af6f1f8a01bebbecd99bc8c066519e89966e65e3)
2004-01-22initilize ev->maxfd = EVENT_INVALID_MAXFD; before the while() loop.Stefan Metzmacher1-0/+1
metze (This used to be commit 61ec710518469876ccc48d57b5fee5d6ead3d482)
2004-01-22- make the recalculation of ev->maxfd a bit more efficient.Stefan Metzmacher1-35/+50
- fix the case when we have no fd_events left on the event_context we now exit after doing the timed events and not block in select() waiting for no fd's to become ready... metze (This used to be commit 857e76ef6b891c199534db6ce229410340286461)
2004-01-21let the event_add_XXX() function return a pointer of the allocated event ↵Stefan Metzmacher1-12/+12
structure and NULL on allacation error. metze (This used to be commit fffc6cfb6b9946155d209dd14faa79c5b9d43d1d)
2003-12-04* added a debug thread id hook from jim myersAndrew Tridgell1-1/+7
* change to select() from sys_select() in events.c, as sys_select() is not thread safe. We need a new unified signal handling scheme for Samba4, but for now just use select() (This used to be commit 126fcd4a76ac029ee4f662ed41b84c791406c324)
2003-08-13first public release of samba4 codeAndrew Tridgell1-0/+372
(This used to be commit b0510b5428b3461aeb9bbe3cc95f62fc73e2b97f)