we cannot return right after socket opening as we need to move back to
the default namespace first

this should fix github issue #500

this might be backported to all version >= 1.6

Fixes: b3e54fe387c7c1 ("MAJOR: namespace: add Linux network namespace
support")
Signed-off-by: William Dauchy <w.dau...@criteo.com>
---
 src/namespace.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/namespace.c b/src/namespace.c
index f23da48f8..89a968e36 100644
--- a/src/namespace.c
+++ b/src/namespace.c
@@ -121,7 +121,8 @@ int my_socketat(const struct netns_entry *ns, int domain, 
int type, int protocol
        sock = socket(domain, type, protocol);
 
        if (default_namespace >= 0 && ns && setns(default_namespace, 
CLONE_NEWNET) == -1) {
-               close(sock);
+               if (sock >= 0)
+                       close(sock);
                return -1;
        }
        return sock;
-- 
2.25.0


Reply via email to