]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/initscripts/init.d/squid
squid: Update to 3.3.8.
[people/teissler/ipfire-2.x.git] / src / initscripts / init.d / squid
index 75dbbfa6bb5c6e2ca69ff5b5a4403d60813d01cd..62d5bea82bb06f18bd918dafa66911b13c1caae3 100644 (file)
@@ -62,13 +62,25 @@ case "$1" in
                eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
 
                if [ -e /var/ipfire/proxy/enable -o -e /var/ipfire/proxy/enable_blue ]; then
-
                        # Add Address to errorpage stylesheet
                        sed "s|XXXhostXXX|$GREEN_ADDRESS|g" /var/ipfire/proxy/errorpage-$ERR_DESIGN.css > \
                                /etc/squid/errorpage.css
 
+                       boot_mesg "Creating Squid swap directories..."
+                       /usr/sbin/squid -z >/dev/null 2>&1
+                       evaluate_retval
+
+                       # Make sure, that the process above has finished.
+                       counter=5
+                       while [ ${counter} -gt 0 ]; do
+                               if pidofproc -s /usr/sbin/squid; then
+                                       sleep 1
+                               else
+                                       break
+                               fi
+                       done
+
                        boot_mesg "Starting Squid Proxy Server..."
-                       loadproc /usr/sbin/squid -z >/dev/null 2>&1
                        loadproc /usr/sbin/squid
                fi
 
@@ -86,9 +98,31 @@ case "$1" in
                        boot_mesg "Stopping Squid Proxy Server..."
                        squid -k shutdown >/dev/null 2>&1
                        evaluate_retval
-                       killproc /usr/bin/squidGuard >/dev/null
-                       killproc /usr/sbin/updxlrator >/dev/null
+
+                       # Stop squidGuard, updxlrator, squidclamav
+                       # and redirect_wrappers.                        
+                       killproc /usr/bin/squidGuard >/dev/null &
+                       killproc /usr/sbin/updxlrator >/dev/null &
+                       killproc /usr/bin/squidclamav >/dev/null &
+                       killproc /usr/sbin/redirect_wrapper >/dev/null &
+
+                       # Wait until all redirectors have been stopped.
+                       wait
+
+                       # If squid is still running, wait up to 30 seconds
+                       # before we go on to kill it.
+                       counter=30
+
+                       while [ ${counter} -gt 0 ]; do
+                               statusproc /usr/sbin/squid >/dev/null && break;
+                               sleep 1
+                               counter=$(( ${counter} - 1))
+                       done
+
+                       # Kill squid service, if still running.
                        killproc /usr/sbin/squid >/dev/null
+
+                       # Trash remain pid file from squid.
                        rm -rf /var/run/squid.pid       
                fi
                ;;