]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Documented a known bug that took a while to triage. No good fix is available.
authorAlex Rousskov <rousskov@measurement-factory.com>
Wed, 25 Jun 2014 23:21:28 +0000 (17:21 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Wed, 25 Jun 2014 23:21:28 +0000 (17:21 -0600)
src/client_side.h

index a86c66c0e0c5707609e72c71d48a605654b812f6..f48c73c4321f897180bde4afc8a1b6d31e92edae 100644 (file)
@@ -78,6 +78,12 @@ class PortCfg;
  *
  * The individual processing actions are done by other Jobs which we
  * kick off as needed.
+ *
+ * XXX: If an async call ends the ClientHttpRequest job, ClientSocketContext
+ * (and ConnStateData) may not know about it, leading to segfaults and
+ * assertions like areAllContextsForThisConnection(). This is difficult to fix
+ * because ClientHttpRequest lacks a good way to communicate its ongoing
+ * destruction back to the ClientSocketContext which pretends to "own" *http.
  */
 class ClientSocketContext : public RefCountable
 {
@@ -91,7 +97,7 @@ public:
     void keepaliveNextRequest();
 
     Comm::ConnectionPointer clientConnection; /// details about the client connection socket.
-    ClientHttpRequest *http;   /* we own this */
+    ClientHttpRequest *http;   /* we pretend to own that job */
     HttpReply *reply;
     char reqbuf[HTTP_REQBUF_SZ];
     Pointer next;