]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Do not duplicate received Surrogate-Capability in sent requests (#2087)
authorEduard Bagdasaryan <eduard.bagdasaryan@measurement-factory.com>
Tue, 17 Jun 2025 21:00:51 +0000 (21:00 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Wed, 18 Jun 2025 14:11:15 +0000 (14:11 +0000)
When computing Surrogate-Capability header while forwarding an
accelerated request, Squid duplicated old (i.e. received) header entries
(if any). For example, this outgoing request shows an extra hop1 entry:

    GET / HTTP/1.1
    ...
    Surrogate-Capability: hop1="Surrogate/1.0"
    Surrogate-Capability: hop1="Surrogate/1.0", hop2="Surrogate/1.0"

src/http.cc

index c712b4b8bce4e80b0a4ef0eb77a2b3996130a5e9..66184e049460e9534eefcce12941a3a5c220ce73 100644 (file)
@@ -1957,6 +1957,7 @@ HttpStateData::httpBuildRequestHeader(HttpRequest * request,
         String strSurrogate(hdr_in->getList(Http::HdrType::SURROGATE_CAPABILITY));
         snprintf(bbuf, BBUF_SZ, "%s=\"Surrogate/1.0\"", Config.Accel.surrogate_id);
         strListAdd(&strSurrogate, bbuf, ',');
+        hdr_out->delById(Http::HdrType::SURROGATE_CAPABILITY);
         hdr_out->putStr(Http::HdrType::SURROGATE_CAPABILITY, strSurrogate.termedBuf());
     }