]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
c-hyper: adjust the hyper to curlcode conversion
authorDaniel Stenberg <daniel@haxx.se>
Tue, 8 Aug 2023 11:19:37 +0000 (13:19 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 8 Aug 2023 21:27:42 +0000 (23:27 +0200)
Closes #11621

lib/c-hyper.c

index 0b9d9ab478e67ff2fd01b75ee106399d1ace7e15..a47a03e126d3e5845c77a3d96499d01026cb52eb 100644 (file)
@@ -416,14 +416,26 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
         size_t errlen = hyper_error_print(hypererr, errbuf, sizeof(errbuf));
         hyper_code code = hyper_error_code(hypererr);
         failf(data, "Hyper: [%d] %.*s", (int)code, (int)errlen, errbuf);
-        if(code == HYPERE_ABORTED_BY_CALLBACK)
+        switch(code) {
+        case HYPERE_ABORTED_BY_CALLBACK:
           result = CURLE_OK;
-        else if((code == HYPERE_UNEXPECTED_EOF) && !data->req.bytecount)
-          result = CURLE_GOT_NOTHING;
-        else if(code == HYPERE_INVALID_PEER_MESSAGE)
+          break;
+        case HYPERE_UNEXPECTED_EOF:
+          if(!data->req.bytecount)
+            result = CURLE_GOT_NOTHING;
+          else
+            result = CURLE_RECV_ERROR;
+          break;
+        case HYPERE_INVALID_PEER_MESSAGE:
+          /* bump headerbytecount to avoid the count remaining at zero and
+             appearing to not having read anything from the peer at all */
+          data->req.headerbytecount++;
           result = CURLE_UNSUPPORTED_PROTOCOL; /* maybe */
-        else
+          break;
+        default:
           result = CURLE_RECV_ERROR;
+          break;
+        }
       }
       *done = TRUE;
       hyper_error_free(hypererr);