aboutgitcodebugslistschat
path: root/tcp_splice.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2024-02-28 22:25:09 +1100
committerStefano Brivio <sbrivio@redhat.com>2024-02-29 09:47:58 +0100
commitd0550f97cd2f38c74806c10904341584f0c0a2ad (patch)
tree782fb84ef475f7824eb0ab50696286fa4fa0c160 /tcp_splice.c
parent80f9b61b509c4a81e0f0f258b27d8eed1d24fa91 (diff)
downloadpasst-d0550f97cd2f38c74806c10904341584f0c0a2ad.tar
passt-d0550f97cd2f38c74806c10904341584f0c0a2ad.tar.gz
passt-d0550f97cd2f38c74806c10904341584f0c0a2ad.tar.bz2
passt-d0550f97cd2f38c74806c10904341584f0c0a2ad.tar.lz
passt-d0550f97cd2f38c74806c10904341584f0c0a2ad.tar.xz
passt-d0550f97cd2f38c74806c10904341584f0c0a2ad.tar.zst
passt-d0550f97cd2f38c74806c10904341584f0c0a2ad.zip
tcp_splice: Don't use flow_trace() before setting flow type
In tcp_splice_conn_from_sock() we can call flow_trace() if there's an error setting TCP_QUICKACK. However, we do so before we've set the flow type in the flow entry. That means that flow_trace() will print nonsense when it tries to print the flow type. There's no reason the setsockopt() has to happen before initialising the flow entry, so just move it after. 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.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/tcp_splice.c b/tcp_splice.c
index 8187220..49585f2 100644
--- a/tcp_splice.c
+++ b/tcp_splice.c
@@ -453,9 +453,6 @@ bool tcp_splice_conn_from_sock(const struct ctx *c,
if (!inany_is_loopback(&aany))
return false;
- if (setsockopt(s, SOL_TCP, TCP_QUICKACK, &((int){ 1 }), sizeof(int)))
- flow_trace(conn, "failed to set TCP_QUICKACK on %i", s);
-
conn->f.type = FLOW_TCP_SPLICE;
conn->flags = inany_v4(&aany) ? 0 : SPLICE_V6;
conn->s[0] = s;
@@ -463,6 +460,9 @@ bool tcp_splice_conn_from_sock(const struct ctx *c,
conn->pipe[0][0] = conn->pipe[0][1] = -1;
conn->pipe[1][0] = conn->pipe[1][1] = -1;
+ if (setsockopt(s, SOL_TCP, TCP_QUICKACK, &((int){ 1 }), sizeof(int)))
+ flow_trace(conn, "failed to set TCP_QUICKACK on %i", s);
+
if (tcp_splice_new(c, conn, ref.port, ref.pif))
conn_flag(c, conn, CLOSING);