]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tool_operate: make --etag-compare always accept a non-existing file
authorDaniel Stenberg <daniel@haxx.se>
Thu, 12 Dec 2024 22:06:19 +0000 (23:06 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 13 Dec 2024 14:48:27 +0000 (15:48 +0100)
Consider it a blank etag. It allows for more use cases when the file
just might not have been created yet.

Closes #15737

docs/cmdline-opts/etag-compare.md
src/tool_operate.c
tests/data/test341

index 114806552bcd4a9f2a1e6b53042cef4d30662924..64ab80cd12b4411d2106d960c07c613db4b5e57e 100644 (file)
@@ -21,7 +21,8 @@ Make a conditional HTTP request for the specific ETag read from the given file
 by sending a custom If-None-Match header using the stored ETag.
 
 For correct results, make sure that the specified file contains only a single
-line with the desired ETag. An empty file is parsed as an empty ETag.
+line with the desired ETag. A non-existing or empty file is treated as an
+empty ETag.
 
 Use the option --etag-save to first save the ETag from a response, and then
 use this option to compare against the saved ETag in a subsequent request.
index 2309495d8228938493315ded4416334b5b6da05f..b3a938c737a3998a3ee016365bf120b2c6797790 100644 (file)
@@ -1940,12 +1940,9 @@ static CURLcode single_transfer(struct GlobalConfig *global,
 
         /* open file for reading: */
         FILE *file = fopen(config->etag_compare_file, FOPEN_READTEXT);
-        if(!file && !config->etag_save_file) {
-          errorf(global,
-                 "Failed to open %s", config->etag_compare_file);
-          result = CURLE_READ_ERROR;
-          break;
-        }
+        if(!file)
+          warnf(global, "Failed to open %s: %s", config->etag_compare_file,
+                strerror(errno));
 
         if((PARAM_OK == file2string(&etag_from_file, file)) &&
            etag_from_file) {
index 4ebee11fcc3903b307d673f695c4183754b6190e..b6e429a222c28e14f7428d61ae64ff2ea7142fd9 100644 (file)
@@ -36,7 +36,7 @@ chunky-trailer: header data
 http
 </server>
 <name>
-Try to open a non existing file with --etag-compare should return an error
+A non existing file with --etag-compare is just a blank
 </name>
 <command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-compare %LOGDIR/etag%TESTNUMBER
@@ -46,9 +46,14 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER --etag-compare %LOGDIR/etag%TESTNUMBER
 #
 # Verify data after the test has been "shot"
 <verify>
-<errorcode>
-26
-</errorcode>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+If-None-Match: ""\r
+\r
+</protocol>
 </verify>
 
 </testcase>