summaryrefslogtreecommitdiffstats
path: root/libiptc
diff options
context:
space:
mode:
Diffstat (limited to 'libiptc')
-rw-r--r--libiptc/libiptc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c
index b7bf785c..277ca0f2 100644
--- a/libiptc/libiptc.c
+++ b/libiptc/libiptc.c
@@ -1226,7 +1226,7 @@ TC_INIT(const char *tablename)
return NULL;
}
sockfd_use++;
-
+retry:
s = sizeof(info);
strcpy(info.name, tablename);
@@ -1279,6 +1279,9 @@ TC_INIT(const char *tablename)
return h;
error:
TC_FREE(&h);
+ /* A different process changed the ruleset size, retry */
+ if (errno == EAGAIN)
+ goto retry;
return NULL;
}