← Commit list

def4d8986e

Daniel Stenberg
Daniel Stenberg
2026-04-14
SUCCESS Duration: 255s

Subject

http: use header_has_value() instead of duplicate code

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/http.c+18 -10
@@ -166,17 +166,29 @@ char *Curl_checkProxyheaders(struct Curl_easy *data,
}
#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 */
}
/*
@@ -192,11 +204,7 @@ static CURLcode copy_custom_value(const char *header, char **valp)
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;