mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
ee0c69a25e
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> |
||
---|---|---|
.. | ||
tests | ||
load.c | ||
load.h | ||
lpq_parse.c | ||
notify.c | ||
notify.h | ||
nt_printing_ads.c | ||
nt_printing_migrate_internal.c | ||
nt_printing_migrate_internal.h | ||
nt_printing_migrate.c | ||
nt_printing_migrate.h | ||
nt_printing_os2.c | ||
nt_printing_os2.h | ||
nt_printing_tdb.c | ||
nt_printing_tdb.h | ||
nt_printing.c | ||
pcap.c | ||
pcap.h | ||
print_aix.c | ||
print_cups.c | ||
print_generic.c | ||
print_iprint.c | ||
print_standard.c | ||
print_svid.c | ||
printer_list.c | ||
printer_list.h | ||
printing_db.c | ||
printing.c | ||
printspoolss.c | ||
queue_process.c | ||
queue_process.h | ||
spoolssd.c |