]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/HttpReply.cc
RFC 9111: Stop treating Warning specially (#1072)
[thirdparty/squid.git] / src / HttpReply.cc
index 9be1d1b3d3307986ff9d90f82be98ef73543858b..329dab60651e07a4d5fa388794b263f79f981d10 100644 (file)
@@ -595,70 +595,6 @@ HttpReply::inheritProperties(const Http::Message *aMsg)
     return true;
 }
 
-void HttpReply::removeStaleWarnings()
-{
-    String warning;
-    if (header.getList(Http::HdrType::WARNING, &warning)) {
-        const String newWarning = removeStaleWarningValues(warning);
-        if (warning.size() && warning.size() == newWarning.size())
-            return; // some warnings are there and none changed
-        header.delById(Http::HdrType::WARNING);
-        if (newWarning.size()) { // some warnings left
-            HttpHeaderEntry *const e =
-                new HttpHeaderEntry(Http::HdrType::WARNING, SBuf(), newWarning.termedBuf());
-            header.addEntry(e);
-        }
-    }
-}
-
-/**
- * Remove warning-values with warn-date different from Date value from
- * a single header entry. Returns a string with all valid warning-values.
- */
-String HttpReply::removeStaleWarningValues(const String &value)
-{
-    String newValue;
-    const char *item = nullptr;
-    int len = 0;
-    const char *pos = nullptr;
-    while (strListGetItem(&value, ',', &item, &len, &pos)) {
-        bool keep = true;
-        // Does warning-value have warn-date (which contains quoted date)?
-        // We scan backwards, looking for two quoted strings.
-        // warning-value = warn-code SP warn-agent SP warn-text [SP warn-date]
-        const char *p = item + len - 1;
-
-        while (p >= item && xisspace(*p)) --p; // skip whitespace
-
-        // warning-value MUST end with quote
-        if (p >= item && *p == '"') {
-            const char *const warnDateEnd = p;
-            --p;
-            while (p >= item && *p != '"') --p; // find the next quote
-
-            const char *warnDateBeg = p + 1;
-            --p;
-            while (p >= item && xisspace(*p)) --p; // skip whitespace
-
-            if (p >= item && *p == '"' && warnDateBeg - p > 2) {
-                // found warn-text
-                String warnDate;
-                warnDate.append(warnDateBeg, warnDateEnd - warnDateBeg);
-                const time_t time = Time::ParseRfc1123(warnDate.termedBuf());
-                keep = (time > 0 && time == date); // keep valid and matching date
-            }
-        }
-
-        if (keep) {
-            if (newValue.size())
-                newValue.append(", ");
-            newValue.append(item, len);
-        }
-    }
-
-    return newValue;
-}
-
 bool
 HttpReply::olderThan(const HttpReply *them) const
 {