From 1a05ef2742b6c362110f662a2818e70cbf4f5102 Mon Sep 17 00:00:00 2001 From: neru Date: Sat, 11 Apr 2026 12:27:40 -0300 Subject: [PATCH] feat: simplify removeHeader --- src/unlocker/proxy.cpp | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/unlocker/proxy.cpp b/src/unlocker/proxy.cpp index fee0f76..4bf4a47 100644 --- a/src/unlocker/proxy.cpp +++ b/src/unlocker/proxy.cpp @@ -49,13 +49,15 @@ int stoiSafe(const std::string& s, int default_val = 0, int base = 10) void removeHeader(std::string& headers, const std::string& key) { - std::string result; - size_t start = 0; - size_t end; + if (!headers.empty() && headers.back() != '\n') headers += "\r\n"; + std::string result; std::string keyLower = key; std::transform(keyLower.begin(), keyLower.end(), keyLower.begin(), ::tolower); + size_t start = 0; + size_t end; + while ((end = headers.find('\n', start)) != std::string::npos) { std::string line = headers.substr(start, end - start + 1); @@ -68,30 +70,13 @@ void removeHeader(std::string& headers, const std::string& key) size_t pos = keyLower.length(); while (pos < lineLower.length() && (lineLower[pos] == ' ' || lineLower[pos] == '\t')) pos++; + if (pos < lineLower.length() && lineLower[pos] == ':') match = true; } if (!match) result += line; - start = end + 1; } - - if (start < headers.length()) - { - std::string line = headers.substr(start); - std::string lineLower = line; - std::transform(lineLower.begin(), lineLower.end(), lineLower.begin(), ::tolower); - bool match = false; - if (lineLower.compare(0, keyLower.length(), keyLower) == 0) - { - size_t pos = keyLower.length(); - while (pos < lineLower.length() && (lineLower[pos] == ' ' || lineLower[pos] == '\t')) - pos++; - if (pos < lineLower.length() && lineLower[pos] == ':') match = true; - } - if (!match) result += line; - } - headers = std::move(result); }