diff options
author | Daniel Stenberg <daniel@haxx.se> | 2015-11-25 11:38:10 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2015-11-25 11:38:10 +0100 |
commit | cd2b73b3ed9d971eca87ee5c6245cc1cc6f83d06 (patch) | |
tree | 9d32ba14e8adf741e4ed76d8648d8059f13f3a2a | |
parent | 5b96b5e79e912418bf01d99a6a27f77e349e4620 (diff) |
timecond: do not add if-modified-since without timecondition
The RTSP code path didn't skip adding the if-modified-since for certain
RTSP code paths, even if CURLOPT_TIMECONDITION was set to
CURL_TIMECOND_NONE.
Also, an unknown non-zero CURLOPT_TIMECONDITION value no longer equals
CURL_TIMECOND_IFMODSINCE.
Bug: http://stackoverflow.com/questions/33903982/curl-timecond-none-doesnt-work-how-to-remove-if-modified-since-header
-rw-r--r-- | lib/http.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/http.c b/lib/http.c index 0ed9c9844..49b7d6b9c 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1701,7 +1701,13 @@ CURLcode Curl_add_timecondition(struct SessionHandle *data, const struct tm *tm; char *buf = data->state.buffer; struct tm keeptime; - CURLcode result = Curl_gmtime(data->set.timevalue, &keeptime); + CURLcode result; + + if(data->set.timecondition == CURL_TIMECOND_NONE) + /* no condition was asked for */ + return CURLE_OK; + + result = Curl_gmtime(data->set.timevalue, &keeptime); if(result) { failf(data, "Invalid TIMEVALUE"); return result; @@ -1727,8 +1733,9 @@ CURLcode Curl_add_timecondition(struct SessionHandle *data, tm->tm_sec); switch(data->set.timecondition) { - case CURL_TIMECOND_IFMODSINCE: default: + break; + case CURL_TIMECOND_IFMODSINCE: result = Curl_add_bufferf(req_buffer, "If-Modified-Since: %s\r\n", buf); break; @@ -2394,11 +2401,9 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) } #endif - if(data->set.timecondition) { - result = Curl_add_timecondition(data, req_buffer); - if(result) - return result; - } + result = Curl_add_timecondition(data, req_buffer); + if(result) + return result; result = Curl_add_custom_headers(conn, FALSE, req_buffer); if(result) |