diff --git a/httplib.h b/httplib.h index c403708..1f54a1d 100644 --- a/httplib.h +++ b/httplib.h @@ -204,6 +204,7 @@ using socket_t = int; #include #include #include +#include #ifdef CPPHTTPLIB_OPENSSL_SUPPORT #include @@ -3171,7 +3172,14 @@ inline std::string append_query_params(const char *path, const Params ¶ms) { } inline void parse_query_text(const std::string &s, Params ¶ms) { + std::set cache; split(s.data(), s.data() + s.size(), '&', [&](const char *b, const char *e) { + std::string kv(b, e); + if (cache.find(kv) != cache.end()) { + return; + } + cache.insert(kv); + std::string key; std::string val; split(b, e, '=', [&](const char *b2, const char *e2) {