#!/bin/sh

PIDFILE=/run/nginx.pid

FORCERESTART=0
if [ "$1" != "-f" ]; then
    FORCERESTART=1
fi

[ ! -f $PIDFILE ] && exit 1
echo "Start new nginx master..."
/bin/systemctl kill --signal=SIGUSR2 nginx.service
sleep 5
[ ! -f $PIDFILE ] && sleep 5
if [ ! -f $PIDFILE ]; then
    echo "Failed to start new nginx master."
    exit 1
fi

echo -n "Stop old nginx master gracefully "
oldpid=`cat $PIDFILE.oldbin 2>/dev/null`

/bin/kill -s QUIT $oldpid 2>/dev/null
wait_count=10

while [ -f $PIDFILE.oldbin -a $wait_count -gt 0 ]; do
    echo -n "."
    wait_count=$((--wait_count))
    sleep 2
done

if [ ! -f $PIDFILE.oldbin ]; then
  echo
  exit 0
fi

echo " failed."

if [ $FORCERESTART -eq 0 ]; then
    exit 1
fi

echo -n "Stop old nginx master immediately "
/bin/kill -s INT $oldpid 2>/dev/null
wait_count=10
while [ -f $PIDFILE.oldbin -a $wait_count -gt 0 ]; do
    echo -n "."
    wait_count=$((--wait_count))
    sleep 2
done

echo
if [ -f $PIDFILE.oldbin ]; then
    echo "Failed to stop old nginx master."
    exit 1
fi
