From 1629f4f3f00d494cae6d3aec11240bd9fbc4305c Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Fri, 11 Nov 2016 18:29:58 +0000 Subject: [PATCH] Loop round iptables commands on EAGAIN --- weave | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/weave b/weave index 3d24a630..dadd9b02 100755 --- a/weave +++ b/weave @@ -398,7 +398,13 @@ add_iptables_rule() { IPTABLES_TABLE="$1" shift 1 if ! run_iptables -t $IPTABLES_TABLE -C "$@" >/dev/null 2>&1 ; then - run_iptables -t $IPTABLES_TABLE -A "$@" >/dev/null + ## Loop until we get an exit code other than "temporarily unavailable" + while true ; do + run_iptables -t $IPTABLES_TABLE -A "$@" >/dev/null && return 0 + if [ $? != 4 ] ; then + return 1 + fi + done fi } @@ -407,7 +413,13 @@ insert_iptables_rule() { IPTABLES_TABLE="$1" shift 1 if ! run_iptables -t $IPTABLES_TABLE -C "$@" >/dev/null 2>&1 ; then - run_iptables -t $IPTABLES_TABLE -I "$@" >/dev/null + ## Loop until we get an exit code other than "temporarily unavailable" + while true ; do + run_iptables -t $IPTABLES_TABLE -I "$@" >/dev/null && return 0 + if [ $? != 4 ] ; then + return 1 + fi + done fi }