}
#endif
+/* If the header has a value, this function returns TRUE and the value is in
+ 'outp' with blanks trimmed off.
+*/
+static bool header_has_value(const char **headerp, struct Curl_str *outp)
+{
+ bool value = !curlx_str_cspn(headerp, outp, ";:") &&
+ (!curlx_str_single(headerp, ':') || !curlx_str_single(headerp, ';'));
+
+ if(value) {
+ curlx_str_untilnl(headerp, outp, MAX_HTTP_RESP_HEADER_SIZE);
+ curlx_str_trimblanks(outp);
+ }
+ return value;
+}
+
static bool http_header_is_empty(const char *header)
{
struct Curl_str out;
- if(!curlx_str_cspn(&header, &out, ";:") &&
- (!curlx_str_single(&header, ':') || !curlx_str_single(&header, ';'))) {
- curlx_str_untilnl(&header, &out, MAX_HTTP_RESP_HEADER_SIZE);
- curlx_str_trimblanks(&out);
+ if(header_has_value(&header, &out)) {
return curlx_strlen(&out) == 0;
}
- return TRUE; /* invalid head format, treat as empty */
+ return TRUE; /* invalid header format, treat as empty */
}
/*
struct Curl_str out;
/* find the end of the header name */
- if(!curlx_str_cspn(&header, &out, ";:") &&
- (!curlx_str_single(&header, ':') || !curlx_str_single(&header, ';'))) {
- curlx_str_untilnl(&header, &out, MAX_HTTP_RESP_HEADER_SIZE);
- curlx_str_trimblanks(&out);
-
+ if(header_has_value(&header, &out)) {
*valp = curlx_memdup0(curlx_str(&out), curlx_strlen(&out));
if(*valp)
return CURLE_OK;