aboutgitcodebugslistschat
path: root/tcp_splice.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-02-19 18:56:49 +1100
committerStefano Brivio <sbrivio@redhat.com>2024-02-27 12:52:44 +0100
commitfbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65 (patch)
tree4acc5b4b68156cb7044dc8091684d389b22b4119 /tcp_splice.c
parent554b3aefe7ab9799e251bdbcce504678a8dfbf12 (diff)
downloadpasst-fbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65.tar
passt-fbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65.tar.gz
passt-fbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65.tar.bz2
passt-fbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65.tar.lz
passt-fbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65.tar.xz
passt-fbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65.tar.zst
passt-fbe81decbdcdfed4b4ff336fcec5fe6ad0dfbe65.zip
tcp, tcp_splice: Issue warnings if unable to refill socket pool
Currently if tcp_sock_refill_pool() is unable to fill all the slots in the pool, it will silently exit. This might lead to a later attempt to get fds from the pool to fail at which point it will be harder to tell what originally went wrong. Instead add warnings if we're unable to refill any of the socket pools when requested. We have tcp_sock_refill_pool() return an error and report it in the callers, because those callers have more context allowing for a more useful message. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'tcp_splice.c')
-rw-r--r--tcp_splice.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/tcp_splice.c b/tcp_splice.c
index cc9745e..ee68029 100644
--- a/tcp_splice.c
+++ b/tcp_splice.c
@@ -710,10 +710,18 @@ static int tcp_sock_refill_ns(void *arg)
ns_enter(c);
- if (c->ifi4)
- tcp_sock_refill_pool(c, ns_sock_pool4, AF_INET);
- if (c->ifi6)
- tcp_sock_refill_pool(c, ns_sock_pool6, AF_INET6);
+ if (c->ifi4) {
+ int rc = tcp_sock_refill_pool(c, ns_sock_pool4, AF_INET);
+ if (rc < 0)
+ warn("TCP: Error refilling IPv4 ns socket pool: %s",
+ strerror(-rc));
+ }
+ if (c->ifi6) {
+ int rc = tcp_sock_refill_pool(c, ns_sock_pool6, AF_INET6);
+ if (rc < 0)
+ warn("TCP: Error refilling IPv6 ns socket pool: %s",
+ strerror(-rc));
+ }
return 0;
}