|
|
|
@ -32,8 +32,13 @@ wait_for()
|
|
|
|
|
start_ts=$(date +%s)
|
|
|
|
|
while :
|
|
|
|
|
do
|
|
|
|
|
(echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1
|
|
|
|
|
result=$?
|
|
|
|
|
if [[ $ISBUSY -eq 1 ]]; then
|
|
|
|
|
nc -z $HOST $PORT
|
|
|
|
|
result=$?
|
|
|
|
|
else
|
|
|
|
|
(echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1
|
|
|
|
|
result=$?
|
|
|
|
|
fi
|
|
|
|
|
if [[ $result -eq 0 ]]; then
|
|
|
|
|
end_ts=$(date +%s)
|
|
|
|
|
echoerr "$cmdname: $HOST:$PORT is available after $((end_ts - start_ts)) seconds"
|
|
|
|
@ -48,9 +53,9 @@ wait_for_wrapper()
|
|
|
|
|
{
|
|
|
|
|
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
|
|
|
|
|
if [[ $QUIET -eq 1 ]]; then
|
|
|
|
|
timeout $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT &
|
|
|
|
|
timeout $BUSYTIMEFLAG $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT &
|
|
|
|
|
else
|
|
|
|
|
timeout $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT &
|
|
|
|
|
timeout $BUSYTIMEFLAG $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT &
|
|
|
|
|
fi
|
|
|
|
|
PID=$!
|
|
|
|
|
trap "kill -INT -$PID" INT
|
|
|
|
@ -136,6 +141,17 @@ STRICT=${STRICT:-0}
|
|
|
|
|
CHILD=${CHILD:-0}
|
|
|
|
|
QUIET=${QUIET:-0}
|
|
|
|
|
|
|
|
|
|
# check to see if timeout is from busybox?
|
|
|
|
|
# check to see if timeout is from busybox?
|
|
|
|
|
TIMEOUT_PATH=$(realpath $(which timeout))
|
|
|
|
|
if [[ $TIMEOUT_PATH =~ "busybox" ]]; then
|
|
|
|
|
ISBUSY=1
|
|
|
|
|
BUSYTIMEFLAG="-t"
|
|
|
|
|
else
|
|
|
|
|
ISBUSY=0
|
|
|
|
|
BUSYTIMEFLAG=""
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ $CHILD -gt 0 ]]; then
|
|
|
|
|
wait_for
|
|
|
|
|
RESULT=$?
|
|
|
|
|