diff options
author | Peter Simonyi <pts@petersimonyi.ca> | 2019-07-10 18:42:35 -0400 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-07-14 16:17:15 +0200 |
commit | 855887af7928d70a2938b7c9c750a0c237c47c15 (patch) | |
tree | 615789bd873a7166126fd2489bd17bd2264a5dc4 /lib | |
parent | ac3d19a26de79d9ec62d20a1a0b645d7ddcc40fd (diff) | |
download | curl-855887af7928d70a2938b7c9c750a0c237c47c15.tar.gz |
http: allow overriding timecond with custom header
With CURLOPT_TIMECONDITION set, a header is automatically added (e.g.
If-Modified-Since). Allow this to be replaced or suppressed with
CURLOPT_HTTPHEADER.
Fixes #4103
Closes #4109
Diffstat (limited to 'lib')
-rw-r--r-- | lib/http.c | 14 | ||||
-rw-r--r-- | lib/http.h | 2 | ||||
-rw-r--r-- | lib/rtsp.c | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/lib/http.c b/lib/http.c index ccf64a270..9fbd7201e 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1881,9 +1881,10 @@ CURLcode Curl_add_custom_headers(struct connectdata *conn, } #ifndef CURL_DISABLE_PARSEDATE -CURLcode Curl_add_timecondition(struct Curl_easy *data, +CURLcode Curl_add_timecondition(const struct connectdata *conn, Curl_send_buffer *req_buffer) { + struct Curl_easy *data = conn->data; const struct tm *tm; struct tm keeptime; CURLcode result; @@ -1916,6 +1917,11 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data, break; } + if(Curl_checkheaders(conn, condp)) { + /* A custom header was specified; it will be sent instead. */ + return CURLE_OK; + } + /* The If-Modified-Since header family should have their times set in * GMT as RFC2616 defines: "All HTTP date/time stamps MUST be * represented in Greenwich Mean Time (GMT), without exception. For the @@ -1941,10 +1947,10 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data, } #else /* disabled */ -CURLcode Curl_add_timecondition(struct Curl_easy *data, +CURLcode Curl_add_timecondition(const struct connectdata *conn, Curl_send_buffer *req_buffer) { - (void)data; + (void)conn; (void)req_buffer; return CURLE_OK; } @@ -2683,7 +2689,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) } #endif - result = Curl_add_timecondition(data, req_buffer); + result = Curl_add_timecondition(conn, req_buffer); if(result) return result; diff --git a/lib/http.h b/lib/http.h index 5af80e75d..72161f6b0 100644 --- a/lib/http.h +++ b/lib/http.h @@ -69,7 +69,7 @@ CURLcode Curl_add_buffer_send(Curl_send_buffer **inp, size_t included_body_bytes, int socketindex); -CURLcode Curl_add_timecondition(struct Curl_easy *data, +CURLcode Curl_add_timecondition(const struct connectdata *conn, Curl_send_buffer *buf); CURLcode Curl_add_custom_headers(struct connectdata *conn, bool is_connect, diff --git a/lib/rtsp.c b/lib/rtsp.c index 74cf23244..25e194a23 100644 --- a/lib/rtsp.c +++ b/lib/rtsp.c @@ -491,7 +491,7 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done) return result; if((rtspreq == RTSPREQ_SETUP) || (rtspreq == RTSPREQ_DESCRIBE)) { - result = Curl_add_timecondition(data, req_buffer); + result = Curl_add_timecondition(conn, req_buffer); if(result) return result; } |