summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2021-01-05 11:47:22 +0100
committerDaniel Stenberg <daniel@haxx.se>2021-01-05 15:33:47 +0100
commit25c1d5e6a8ccaf9c56751e23e3c7f17c0dc0555e (patch)
tree1ce2c69ffc11f8038cb502eb4f61283dcd263b53
parent56b32b5d7570c7eb4275bfe513af6a758f1dfe94 (diff)
downloadcurl-25c1d5e6a8ccaf9c56751e23e3c7f17c0dc0555e.tar.gz
c-hyper: poll the tasks until end correctly
... makes test 36 work. Closes #6412
-rw-r--r--lib/c-hyper.c4
-rw-r--r--lib/c-hyper.h2
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,