I think the patch below will safely stop a running httpd server without the risk of races from nc restarting at every hit. Please review before I commit. Cheers, Frans Index: debian/save-logs.postinst =================================================================== --- debian/save-logs.postinst (revision 28046) +++ debian/save-logs.postinst (working copy) @@ -48,9 +48,19 @@ ln -sf /etc/lsb-release /var/log ln -sf /var/lib/dpkg/status /var/log ln -sf /usr/share/save-logs/install-report.template /var/log - # TODO: avoid running more than one + + # Kill existing server if one is already running + touch /var/lib/httpd_stop # Block new listener processes from starting + sleep 1 + for PID in $(pidof nc); do + if grep -q "httpd" /proc/$PID/cmdline ; then + # The server may already have gone if hit + kill $PID 2>/dev/null || true + fi + done + rm /var/lib/httpd_stop httpd - + db_progress STEP 1 db_progress STOP IPADDR=$(ifconfig | grep 'inet addr:' | head -1 | \ Index: httpd =================================================================== --- httpd (revision 28045) +++ httpd (working copy) @@ -18,6 +18,7 @@ } if [ -z "$HTTPD_STARTED" ]; then + [ -f /var/lib/httpd_stop ] && exit HTTPD_STARTED=1 export HTTPD_STARTED # daemonize @@ -25,7 +26,7 @@ exit else # start up the next listener process - run_nc $0 + [ ! -f /var/lib/httpd_stop ] && run_nc $0 fi read GET page x y z
Attachment:
pgppA_tF_t8DF.pgp
Description: PGP signature