]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/HttpHeader.cc
Log PROXY protocol v2 TLVs; fix PROXY protocol parsing bugs (#342)
[thirdparty/squid.git] / src / HttpHeader.cc
index 8850f52d5e7049a558f03f31e050f2f8f6121974..930b4a5263ed418f188a0758abf9948e3c571d29 100644 (file)
@@ -953,57 +953,23 @@ HttpHeader::hasNamed(const char *name, unsigned int namelen, String *result) con
 /*
  * Returns a the value of the specified list member, if any.
  */
-String
+SBuf
 HttpHeader::getByNameListMember(const char *name, const char *member, const char separator) const
 {
-    String header;
-    const char *pos = NULL;
-    const char *item;
-    int ilen;
-    int mlen = strlen(member);
-
     assert(name);
-
-    header = getByName(name);
-
-    String result;
-
-    while (strListGetItem(&header, separator, &item, &ilen, &pos)) {
-        if (strncmp(item, member, mlen) == 0 && item[mlen] == '=') {
-            result.append(item + mlen + 1, ilen - mlen - 1);
-            break;
-        }
-    }
-
-    return result;
+    const auto header = getByName(name);
+    return ::getListMember(header, member, separator);
 }
 
 /*
  * returns a the value of the specified list member, if any.
  */
-String
+SBuf
 HttpHeader::getListMember(Http::HdrType id, const char *member, const char separator) const
 {
-    String header;
-    const char *pos = NULL;
-    const char *item;
-    int ilen;
-    int mlen = strlen(member);
-
     assert(any_registered_header(id));
-
-    header = getStrOrList(id);
-    String result;
-
-    while (strListGetItem(&header, separator, &item, &ilen, &pos)) {
-        if (strncmp(item, member, mlen) == 0 && item[mlen] == '=') {
-            result.append(item + mlen + 1, ilen - mlen - 1);
-            break;
-        }
-    }
-
-    header.clean();
-    return result;
+    const auto header = getStrOrList(id);
+    return ::getListMember(header, member, separator);
 }
 
 /* test if a field is present */