diff options
author | Daniel Stenberg <daniel@haxx.se> | 2021-01-05 11:47:22 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2021-01-05 15:33:47 +0100 |
commit | 25c1d5e6a8ccaf9c56751e23e3c7f17c0dc0555e (patch) | |
tree | 1ce2c69ffc11f8038cb502eb4f61283dcd263b53 | |
parent | 56b32b5d7570c7eb4275bfe513af6a758f1dfe94 (diff) | |
download | curl-25c1d5e6a8ccaf9c56751e23e3c7f17c0dc0555e.tar.gz |
c-hyper: poll the tasks until end correctly
... makes test 36 work.
Closes #6412
-rw-r--r-- | lib/c-hyper.c | 4 | ||||
-rw-r--r-- | lib/c-hyper.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/lib/c-hyper.c b/lib/c-hyper.c index 9ee17e3f8..19ba8d9b8 100644 --- a/lib/c-hyper.c +++ b/lib/c-hyper.c @@ -329,7 +329,7 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data, hyper_error_free(hypererr); break; } - else if(h->init) { + else if(h->endtask == task) { /* end of transfer */ *done = TRUE; infof(data, "hyperstream is done!\n"); @@ -341,7 +341,6 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data, } /* HYPER_TASK_RESPONSE */ - h->init = TRUE; *didwhat = KEEP_RECV; if(!resp) { failf(data, "hyperstream: couldn't get response"); @@ -403,6 +402,7 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data, result = CURLE_OUT_OF_MEMORY; break; } + h->endtask = foreach; hyper_response_free(resp); resp = NULL; diff --git a/lib/c-hyper.h b/lib/c-hyper.h index e2ff743b2..d60ed78d1 100644 --- a/lib/c-hyper.h +++ b/lib/c-hyper.h @@ -32,7 +32,7 @@ struct hyptransfer { hyper_waker *write_waker; hyper_waker *read_waker; const hyper_executor *exec; - bool init; + hyper_task *endtask; }; size_t Curl_hyper_recv(void *userp, hyper_context *ctx, |