summaryrefslogtreecommitdiffstats
path: root/source3/lib/server_prefork.h
Commit message (Collapse)AuthorAgeFilesLines
* s3-prefork: Listening fds must be in non-blocking modeSimo Sorce2011-08-211-0/+3
| | | | | Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
* s3-prefork: Fix code to retire childrenSimo Sorce2011-08-211-1/+3
| | | | | | | | | | | | | | | We have to be more careful when retiring children. We cannot stop accepting connections as soon as the server tells us to quit because if max_children is reached and we still have clients connected, the server will not be able to spawn new children until one exits. And children will not exit until all the clients closed the connections. So we keep operating past our recall until we have 0 connections. Also do not try to recall children that still have >= 1 clients connected, they couldn't anyway. Also use messaging to warn children and not SIGHUP. Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
* s3-prefork: Add parent->client messagingSimo Sorce2011-08-211-0/+10
| | | | | Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
* s3-prefork: Improve heuristicsSimo Sorce2011-08-211-4/+4
| | | | | Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
* s3-prefork: Fix worker flags handling.Simo Sorce2011-08-211-2/+1
| | | | | | | | | | | | | We can't have a clear idea of wether the worker is IDLE or BUSY. The only things we can tell is if it is Alive, whether it is currently Accepting connections or wether it is Exiting soon. Remove PF_WORKER_IDLE, PF_WORKER_BUSY and replace their use with PF_WORKER_ALIVE. Also properly assign PF_WORKER_ACCEPTING so that users of the API can rely on the flag. Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
* s3-prefork: do not use a lock_fd, just race on accept()Simo Sorce2011-08-211-5/+1
| | | | | | | | | | | | | | | | | | | We used a lock mimicking what apache does for preforked children. But it doesn't work properly in our case because we do not stop once a request has been served. Clients are allowed to perform multiple requests and keep the connection open. This means that if we allow multiple clients per children, then a child could take the lock and then be asked to do a long or even locking operation by a client it already is serving. This woulkd cause the whole server to deadlock, as the child is now busy and also holding on the lock. Using a race on accept() by having a tevent_fd on the listening socket wait for read events we never deadlock. At most we cause a bit of contention among children. But in the generic case connections are much less frequent for us as clients tend to be long lived. So the little contention we may have is not a big deal. Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
* s3-prefork: Allow better management of allowed_clientsSimo Sorce2011-08-211-5/+22
| | | | | Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
* s3: Fix some typos -- Simo, please checkVolker Lendecke2011-08-101-7/+7
|
* s3-prefork: Pass the child a child_idSimo Sorce2011-08-101-0/+1
| | | | Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: Return tsocket_address for client and serverSimo Sorce2011-08-101-9/+12
| | | | Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: Pass messaging context around tooSimo Sorce2011-08-101-2/+9
| | | | | | Pair-Programmed-With: Andreas Schneider <asn@samba.org> Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: Set up a SIGCHLD handler by defaultSimo Sorce2011-08-101-10/+23
| | | | | | | | | | | We need to properly handle preforked children so it is better to just do that automatically. If the parent needs/wants to intercept SIGCHLD events it can set a callback that will be called by the prefork code once the internal cleanup function that checks all prefork children has been executed. Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: Provide a cleanup functionSimo Sorce2011-08-101-8/+4
| | | | | | | This way the parent doesn't need to know how to handle dead children and keeps all of that within the prefork abstraction. Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: Inline Doxygen DocumentationSimo Sorce2011-08-101-0/+160
| | | | Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: add support for multiple listning file descriptorsSimo Sorce2011-08-101-9/+7
| | | | Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: provide way to send a signal to all childrenSimo Sorce2011-08-101-0/+1
| | | | Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: provide means to expand the pool sizeSimo Sorce2011-08-101-0/+1
| | | | Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: add way to manage number of clients per childSimo Sorce2011-08-101-1/+5
| | | | | | | | The allowed_clients var is a parent managed variable that tell children how many clients they are allowed to handle at the same time. This way children can overcommit but within parent controlled limits. Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: add asynchronous functionsSimo Sorce2011-08-101-0/+8
| | | | | | To get a client connection it is now possible to use asynchronous functions. Signed-off-by: Andreas Schneider <asn@samba.org>
* s3-prefork: implement prefork frameworkSimo Sorce2011-08-101-0/+76
Primarily built for forked off rpc service daemons, but not tied to rpc services and generic enough to be used elsewhere easily. Signed-off-by: Andreas Schneider <asn@samba.org>