From 554b3aefe7ab9799e251bdbcce504678a8dfbf12 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Mon, 19 Feb 2024 18:56:48 +1100 Subject: 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 Signed-off-by: Stefano Brivio --- tcp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'tcp.c') 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; } } -- cgit v1.2.3