summaryrefslogtreecommitdiff
path: root/source3/lib/server_prefork.h
AgeCommit message (Collapse)AuthorFilesLines
2011-08-21s3-prefork: Listening fds must be in non-blocking modeSimo Sorce1-0/+3
Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
2011-08-21s3-prefork: Fix code to retire childrenSimo Sorce1-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>
2011-08-21s3-prefork: Add parent->client messagingSimo Sorce1-0/+10
Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
2011-08-21s3-prefork: Improve heuristicsSimo Sorce1-4/+4
Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
2011-08-21s3-prefork: Fix worker flags handling.Simo Sorce1-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>
2011-08-21s3-prefork: do not use a lock_fd, just race on accept()Simo Sorce1-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>
2011-08-21s3-prefork: Allow better management of allowed_clientsSimo Sorce1-5/+22
Signed-off-by: Andreas Schneider <asn@samba.org> Signed-off-by: Simo Sorce <idra@samba.org>
2011-08-10s3: Fix some typos -- Simo, please checkVolker Lendecke1-7/+7
2011-08-10s3-prefork: Pass the child a child_idSimo Sorce1-0/+1
Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: Return tsocket_address for client and serverSimo Sorce1-9/+12
Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: Pass messaging context around tooSimo Sorce1-2/+9
Pair-Programmed-With: Andreas Schneider <asn@samba.org> Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: Set up a SIGCHLD handler by defaultSimo Sorce1-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>
2011-08-10s3-prefork: Provide a cleanup functionSimo Sorce1-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>
2011-08-10s3-prefork: Inline Doxygen DocumentationSimo Sorce1-0/+160
Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: add support for multiple listning file descriptorsSimo Sorce1-9/+7
Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: provide way to send a signal to all childrenSimo Sorce1-0/+1
Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: provide means to expand the pool sizeSimo Sorce1-0/+1
Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: add way to manage number of clients per childSimo Sorce1-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>
2011-08-10s3-prefork: add asynchronous functionsSimo Sorce1-0/+8
To get a client connection it is now possible to use asynchronous functions. Signed-off-by: Andreas Schneider <asn@samba.org>
2011-08-10s3-prefork: implement prefork frameworkSimo Sorce1-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>