]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Prevent "found KEY_PRIVATE" WARNINGs by releasing FTP gw store entries.
authorAlex Rousskov <rousskov@measurement-factory.com>
Tue, 27 Aug 2013 21:53:40 +0000 (15:53 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Tue, 27 Aug 2013 21:53:40 +0000 (15:53 -0600)
src/FtpGatewayServer.cc
src/client_side.cc

index 7c3243d3171397564db2f0138470f1a4d846ed52..5df26b25566edf32a59726b2a04e107221827409 100644 (file)
@@ -96,6 +96,9 @@ ServerStateData::ServerStateData(FwdState *const fwdState):
     AsyncJob("Ftp::Gateway::ServerStateData"), Ftp::ServerStateData(fwdState),
     forwardingCompleted(false)
 {
+    // Nothing we can do at request creation time can mark the response as
+    // uncachable, unfortunately. This prevents "found KEY_PRIVATE" WARNINGs.
+    entry->releaseRequest();
 }
 
 ServerStateData::~ServerStateData()
index 9063f80b69089981cdd0c1245a8552c846925588..1c3c47c6ea40030a917a27546734f262738c7f3c 100644 (file)
@@ -5099,6 +5099,11 @@ FtpParseRequest(ConnStateData *connState, HttpRequestMethod *method_p, Http::Pro
     }
 
     request->http_ver = *http_ver;
+
+    // Our fake Request-URIs are not distinctive enough for caching to work
+    request->flags.cachable = false; // XXX: reset later by maybeCacheable()
+    request->flags.noCache = true;
+
     request->header.putStr(HDR_FTP_COMMAND, cmd.termedBuf());
     request->header.putStr(HDR_FTP_ARGUMENTS, params.termedBuf() != NULL ?
                            params.termedBuf() : "");
@@ -5758,6 +5763,10 @@ FtpSetReply(ClientSocketContext *context, const int code, const char *msg)
     clientReplyContext *const repContext =
         dynamic_cast<clientReplyContext *>(node->data.getRaw());
     assert(repContext != NULL);
-    repContext->createStoreEntry(http->request->method, RequestFlags());
+
+    RequestFlags flags;
+    flags.cachable = false; // force releaseRequest() in storeCreateEntry()
+    flags.noCache = true;
+    repContext->createStoreEntry(http->request->method, flags);
     http->storeEntry()->replaceHttpReply(reply);
 }