From cd2b73b3ed9d971eca87ee5c6245cc1cc6f83d06 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 25 Nov 2015 11:38:10 +0100 Subject: 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 --- lib/http.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'lib') 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) -- cgit v1.2.3