MINOR: muxes: Note that we can't usee a connection when added to the srv idle.
In the various muxes, add a comment documenting that once
srv_add_to_idle_list() got called, any thread may pick that conenction up,
so it is unsafe to access the mux context/the connection, the only thing we
can do is returning.
diff --git a/src/mux_fcgi.c b/src/mux_fcgi.c
index 993e02c..b7afde1 100644
--- a/src/mux_fcgi.c
+++ b/src/mux_fcgi.c
@@ -3558,6 +3558,10 @@
TRACE_DEVEL("outgoing connection killed", FCGI_EV_STRM_END|FCGI_EV_FCONN_ERR);
return;
}
+ /* At this point, the connection has been added to the
+ * server idle list, so another thread may already have
+ * hijacked it, so we can't do anything with it.
+ */
TRACE_DEVEL("reusable idle connection", FCGI_EV_STRM_END, fconn->conn);
return;
}
diff --git a/src/mux_h1.c b/src/mux_h1.c
index fee645b..27b1cb6 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -2473,6 +2473,10 @@
TRACE_DEVEL("outgoing connection killed", H1_EV_STRM_END|H1_EV_H1C_END);
goto end;
}
+ /* At this point, the connection has been added to the
+ * server idle list, so another thread may already have
+ * hijacked it, so we can't do anything with it.
+ */
return;
}
}
diff --git a/src/mux_h2.c b/src/mux_h2.c
index d10c525..6b1c0d1 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -3959,6 +3959,10 @@
TRACE_DEVEL("leaving on error after killing outgoing connection", H2_EV_STRM_END|H2_EV_H2C_ERR);
return;
}
+ /* At this point, the connection has been added to the
+ * server idle list, so another thread may already have
+ * hijacked it, so we can't do anything with it.
+ */
TRACE_DEVEL("reusable idle connection", H2_EV_STRM_END);
return;