diff options
author | Michael Adam <obnox@samba.org> | 2017-07-18 12:50:15 +0200 |
---|---|---|
committer | Andreas Schneider <asn@samba.org> | 2018-05-02 14:23:34 +0200 |
commit | 6661997701aef9f609465b3a1863cf03402bc06a (patch) | |
tree | 09f442d90c608231eb55cebdcd9ce840392ff6e8 | |
parent | aec1e1207d70f1b2a12a3cb3641691bb99ba7581 (diff) | |
download | socket_wrapper-6661997701aef9f609465b3a1863cf03402bc06a.tar.gz socket_wrapper-6661997701aef9f609465b3a1863cf03402bc06a.tar.xz socket_wrapper-6661997701aef9f609465b3a1863cf03402bc06a.zip |
swrap: set errno to ENFILE if there is no more free socket_info
Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
-rw-r--r-- | src/socket_wrapper.c | 3 | ||||
-rw-r--r-- | tests/test_max_sockets.c | 4 |
2 files changed, 3 insertions, 4 deletions
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c index 61f0f6e..12dfb74 100644 --- a/src/socket_wrapper.c +++ b/src/socket_wrapper.c @@ -1368,6 +1368,7 @@ static int socket_wrapper_first_free_index(void) int next_free; if (first_free == -1) { + errno = ENFILE; return -1; } @@ -2897,7 +2898,6 @@ static int swrap_socket(int family, int type, int protocol) idx = socket_wrapper_first_free_index(); if (idx == -1) { - errno = ENOMEM; return -1; } @@ -3113,7 +3113,6 @@ static int swrap_accept(int s, idx = socket_wrapper_first_free_index(); if (idx == -1) { - errno = ENOMEM; return -1; } diff --git a/tests/test_max_sockets.c b/tests/test_max_sockets.c index 0bc694b..00aa79b 100644 --- a/tests/test_max_sockets.c +++ b/tests/test_max_sockets.c @@ -63,7 +63,7 @@ static void test_max_sockets(void **state) /* no free space for sockets left */ rc = _socket(&s[MAX_SOCKETS]); assert_int_equal(rc, -1); - assert_int_equal(errno, ENOMEM); + assert_int_equal(errno, ENFILE); /* closing a socket frees up space */ close(s[0]); @@ -73,7 +73,7 @@ static void test_max_sockets(void **state) /* but just one */ rc = _socket(&s[MAX_SOCKETS]); assert_int_equal(rc, -1); - assert_int_equal(errno, ENOMEM); + assert_int_equal(errno, ENFILE); for (i = 0; i < MAX_SOCKETS; i++) { close(s[i]); |