[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
slapd detach and listen order
- To: openldap-devel@openldap.org
- Subject: slapd detach and listen order
- From: Greg Hudson <ghudson@mit.edu>
- Date: Fri, 09 Nov 2012 15:00:57 -0500
- User-agent: Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20121028 Thunderbird/16.0.2
Up through 2.4.26, slapd detached after binding server sockets
(slapd_daemon_init) but before initializing back ends (slap_startup)
or calling listen on the server sockets (slapd_daemon). Since
initializing DB back ends could take some time, there were some
practical issues like
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=589915 .
The intended fix for this, 03ac02c7215fb592a75370b86069ee2372abec49
and f77e475967cb71ce925941b4660c4d7a04b3b8bf and
9f66f51a7189e6bf73ae6f2ff5da11487a94664e, cause the parent process to
wait until the child has finished running slap_startup(). But unless
I'm misreading the code, it seems like there is still a window after
the parent exits before the child calls listen on the server sockets,
during which a client could try to connect and fail.
Is there a reason why the call to listen needs to be deferred until
slapd_daemon_task, instead of doing it in slap_open_listener when the
server sockets are first bound?
(This issue came up for me because I'm writing automated tests for the
MIT krb5 LDAP KDB module. I haven't been able to produce a failure to
connect after starting the 2.4.28 slapd, I think because the window is
very brief, but any window is likely to eventually cause an issue on
someone's machine, in my experience.)