From 5dc45445ff18207dbacebf1f777e1f1abcd5065d Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Mon, 29 Jul 2024 17:48:16 +0200 Subject: [PATCH] BUG/MEDIUM: stconn: Report error on SC on send if a previous SE error was set When a send on a connection is performed, if a SE error (or a pending error) was already reported earlier, we leave immediately. No send is performed. However, we must be sure to report the error at the SC level if necessary. Indeed, the SE error may have been reported during the zero-copy data forwarding. So during receive on the opposite side. In that case, we may have missed the opportunity to report it at the SC level. The patch must be backported as far as 2.8. --- src/stconn.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/stconn.c b/src/stconn.c index 093ffcb552..8f9f264b9d 100644 --- a/src/stconn.c +++ b/src/stconn.c @@ -1589,6 +1589,8 @@ int sc_conn_send(struct stconn *sc) if (sc->state < SC_ST_CON) return 0; BUG_ON(sc_ep_test(sc, SE_FL_EOS|SE_FL_ERROR|SE_FL_ERR_PENDING) == (SE_FL_EOS|SE_FL_ERR_PENDING)); + if (sc_ep_test(sc, SE_FL_ERROR)) + sc->flags |= SC_FL_ERROR; return 1; } -- 2.47.3