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
---
tcp_splice.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tcp_splice.c b/tcp_splice.c
index f0343eb5..180a9ea7 100644
--- a/tcp_splice.c
+++ b/tcp_splice.c
@@ -445,9 +445,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;
@@ -455,6 +452,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);
--
2.43.0