diff options
Diffstat (limited to 'main/varnish/varnishd.initd')
-rwxr-xr-x | main/varnish/varnishd.initd | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/main/varnish/varnishd.initd b/main/varnish/varnishd.initd index a10e219a8e..b8c565317c 100755 --- a/main/varnish/varnishd.initd +++ b/main/varnish/varnishd.initd @@ -3,7 +3,7 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/www-servers/varnish/files/varnishd.initd,v 1.7 2009/08/30 06:28:07 hollow Exp $ -extra_commands=reload +extra_commands="reload flush" depend() { need net @@ -36,9 +36,25 @@ stop() { } reload() { - ebegin "Reloading varnish" - NOW=`date +%s` - /usr/bin/varnishadm -T $ADMINHOSTPORT vcl.load reload$NOW $CFG_FILE - /usr/bin/varnishadm -T $ADMINHOSTPORT vcl.use reload$NOW $CFG_FILE - eend $? + ebegin "Reloading varnish" + + # purge unused old configurations + DISCARDS=$(/usr/bin/varnishadm -T $ADMINHOSTPORT vcl.list | + sed -ne "s/^available *0 *\(reload.*\)/ \\1/p") + for VCL in $DISCARDS ; do + /usr/bin/varnishadm -T $ADMINHOSTPORT vcl.discard $VCL > /dev/null + done + + # reload new one + NOW=$(date +%Y%m%d-%H%M%S-%s) + /usr/bin/varnishadm -T $ADMINHOSTPORT vcl.load reload-$NOW $CFG_FILE > /dev/null + /usr/bin/varnishadm -T $ADMINHOSTPORT vcl.use reload-$NOW > /dev/null + + eend $? +} + +flush() { + ebegin "Flushing varnish cache" + /usr/bin/varnishadm -T $ADMINHOSTPORT ban obj.http.host "~" "." > /dev/null + eend $? } |