Socket not ready problem.
Stefan Lambrev
stefan.lambrev at moneybookers.com
Wed Jul 9 14:21:26 UTC 2008
Greetings,
I have few apps installed from ports (clamav-milter, spamassassin-milter
and etc)
which should chown/chmod their socket to allow apps running with
different user
to connect to them.
The problem is that I see some race here. On SMP machine very often the app
finish it's execution and next chown/chmod is called, but the socket is
not opened/created at this point.
Which is very annoying because I have to change my rc.d scripts by hand
every time when I update/upgrade.
And sometimes I forget ...
Can you consider the following patch (or if you like something similar)
for inclusion which will then allow
rc.d shell script to call a function to wait for the socket and once
ready to exit and let chown/chmod start.
The function should be called with 2 parameters - socket path and
timeout (and we can manage them from rc.conf)
--- /usr/src/etc/rc.subr 2008-05-20 11:00:14.000000000 +0200
+++ /etc/rc.subr 2008-05-26 17:59:08.000000000 +0200
@@ -1569,4 +1569,22 @@
fi
+wait_for_socket()
+{
+ _socketpath=$1
+ _timeout=$2
+ if [ -z "${_socketpath}" -o -z "${_timeout}" ]; then
+ err 3 'USAGE: wait_for_socket socketpath timeout'
+ fi
+
+ while [ ${_timeout} -gt 0 ]
+ do
+ [ -S "${_socketpath}" ] && break
+ echo -n "."
+ sleep 1
+ _timeout=$((${_timeout}-1))
+ done
+ echo
+}
+
_rc_subr_loaded=:
--
Best Wishes,
Stefan Lambrev
ICQ# 24134177
More information about the freebsd-arch
mailing list