diff options
author | Kwon-Young Choi <kwon-young.choi@hotmail.fr> | 2020-04-04 17:27:18 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-04-05 11:13:49 +0200 |
commit | 54ecc11cc4c4cf4a6ed958fd2906f3a791d1c8d2 (patch) | |
tree | d53c220ef41aa1d1a4d7debcf70fbae216ab9744 | |
parent | a448a4ce2615373fc63818afede79550f2ca6a14 (diff) |
CURLINFO_CONDITION_UNMET: return true for 304 http status code
In libcurl, CURLINFO_CONDITION_UNMET is used to avoid writing to the
output file if the server did not transfered a file based on time
condition. In the same manner, getting a 304 HTTP response back from the
server, for example after passing a custom If-Match-* header, also
fulfill this condition.
Fixes #5181
Closes #5183
-rw-r--r-- | docs/libcurl/curl_easy_getinfo.3 | 2 | ||||
-rw-r--r-- | docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 | 6 | ||||
-rw-r--r-- | lib/getinfo.c | 7 |
3 files changed, 10 insertions, 5 deletions
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3 index c7b124a24..647165358 100644 --- a/docs/libcurl/curl_easy_getinfo.3 +++ b/docs/libcurl/curl_easy_getinfo.3 @@ -210,7 +210,7 @@ TLS session info that can be used for further processing. See \fICURLINFO_TLS_SESSION(3)\fP. Deprecated option, use \fICURLINFO_TLS_SSL_PTR(3)\fP instead! .IP CURLINFO_CONDITION_UNMET -Whether or not a time conditional was met. +Whether or not a time conditional was met or 304 HTTP response. See \fICURLINFO_CONDITION_UNMET(3)\fP .IP CURLINFO_RTSP_SESSION_ID RTSP session ID. diff --git a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 index 27488656e..78c28fa02 100644 --- a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 +++ b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 @@ -22,7 +22,7 @@ .\" .TH CURLINFO_CONDITION_UNMET 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options" .SH NAME -CURLINFO_CONDITION_UNMET \- get info on unmet time conditional +CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response. .SH SYNOPSIS #include <curl/curl.h> @@ -32,7 +32,9 @@ Pass a pointer to a long to receive the number 1 if the condition provided in the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas, if this returns a 1 you know that the reason you didn't get data in return is because it didn't fulfill the condition. The long this argument points to will -get a zero stored if the condition instead was met. +get a zero stored if the condition instead was met. This can also return 1 if +the server responded with a 304 HTTP status code, for example after sending a +custom "If-Match-*" header. .SH PROTOCOLS HTTP and some .SH EXAMPLE diff --git a/lib/getinfo.c b/lib/getinfo.c index 18274e964..84d9fc1c6 100644 --- a/lib/getinfo.c +++ b/lib/getinfo.c @@ -239,8 +239,11 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info, *param_longp = data->info.conn_local_port; break; case CURLINFO_CONDITION_UNMET: - /* return if the condition prevented the document to get transferred */ - *param_longp = data->info.timecond ? 1L : 0L; + if(data->info.httpcode == 304) + *param_longp = 1L; + else + /* return if the condition prevented the document to get transferred */ + *param_longp = data->info.timecond ? 1L : 0L; break; case CURLINFO_RTSP_CLIENT_CSEQ: *param_longp = data->state.rtsp_next_client_CSeq; |