aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2015-11-25 11:38:10 +0100
committerDaniel Stenberg <daniel@haxx.se>2015-11-25 11:38:10 +0100
commitcd2b73b3ed9d971eca87ee5c6245cc1cc6f83d06 (patch)
tree9d32ba14e8adf741e4ed76d8648d8059f13f3a2a
parent5b96b5e79e912418bf01d99a6a27f77e349e4620 (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.c19
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)