diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2024-02-28 22:25:09 +1100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-02-29 09:47:58 +0100 |
commit | d0550f97cd2f38c74806c10904341584f0c0a2ad (patch) | |
tree | 782fb84ef475f7824eb0ab50696286fa4fa0c160 /tcp_splice.c | |
parent | 80f9b61b509c4a81e0f0f258b27d8eed1d24fa91 (diff) | |
download | passt-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.c | 6 |
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); |