diff --git a/src/curl.cpp b/src/curl.cpp index 650668e..b94ab50 100644 --- a/src/curl.cpp +++ b/src/curl.cpp @@ -4073,6 +4073,10 @@ string get_sorted_header_keys(const struct curl_slist* list) string strkey = list->data; size_t pos; if(string::npos != (pos = strkey.find(':', 0))){ + if (trim(strkey.substr(pos + 1)).empty()) { + // skip empty-value headers (as they are discarded by libcurl) + continue; + } strkey = strkey.substr(0, pos); } if(0 < sorted_headers.length()){ @@ -4099,6 +4103,10 @@ string get_canonical_headers(const struct curl_slist* list) if(string::npos != (pos = strhead.find(':', 0))){ string strkey = trim(lower(strhead.substr(0, pos))); string strval = trim(strhead.substr(pos + 1)); + if (strval.empty()) { + // skip empty-value headers (as they are discarded by libcurl) + continue; + } strhead = strkey + string(":") + strval; }else{ strhead = trim(lower(strhead)); @@ -4124,6 +4132,10 @@ string get_canonical_headers(const struct curl_slist* list, bool only_amz) if(string::npos != (pos = strhead.find(':', 0))){ string strkey = trim(lower(strhead.substr(0, pos))); string strval = trim(strhead.substr(pos + 1)); + if (strval.empty()) { + // skip empty-value headers (as they are discarded by libcurl) + continue; + } strhead = strkey + string(":") + strval; }else{ strhead = trim(lower(strhead));