aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-02-19 18:56:48 +1100
committerStefano Brivio <sbrivio@redhat.com>2024-02-27 12:52:17 +0100
commit554b3aefe7ab9799e251bdbcce504678a8dfbf12 (patch)
treeb0e9fd686b4675d4592c0b5c9f08fb460efa6623
parentaf303fdbff4910454de3414f47c1345a6d01065a (diff)
downloadpasst-554b3aefe7ab9799e251bdbcce504678a8dfbf12.tar
passt-554b3aefe7ab9799e251bdbcce504678a8dfbf12.tar.gz
passt-554b3aefe7ab9799e251bdbcce504678a8dfbf12.tar.bz2
passt-554b3aefe7ab9799e251bdbcce504678a8dfbf12.tar.lz
passt-554b3aefe7ab9799e251bdbcce504678a8dfbf12.tar.xz
passt-554b3aefe7ab9799e251bdbcce504678a8dfbf12.tar.zst
passt-554b3aefe7ab9799e251bdbcce504678a8dfbf12.zip
tcp: Stop on first error when refilling socket pools
Currently if we get an error opening a new socket while refilling a socket pool, we carry on to the next slot and try again. This isn't very useful, since by far the most likely cause of an error is some sort of resource exhaustion. Trying again will probably just hit the same error, and maybe even make things worse. So, instead stop on the first error while refilling the pool, making do with however many sockets we managed to open before the error. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r--tcp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/tcp.c b/tcp.c
index 9eec9f3..d49210b 100644
--- a/tcp.c
+++ b/tcp.c
@@ -3016,7 +3016,8 @@ void tcp_sock_refill_pool(const struct ctx *c, int pool[], sa_family_t af)
if (pool[i] >= 0)
continue;
- pool[i] = tcp_conn_new_sock(c, af);
+ if ((pool[i] = tcp_conn_new_sock(c, af)) < 0)
+ break;
}
}