aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/http2.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/http2.c b/lib/http2.c
index d4bc82afa..3ee99e20b 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -270,15 +270,9 @@ static int before_frame_send(nghttp2_session *session,
void *userp)
{
struct connectdata *conn = (struct connectdata *)userp;
- struct http_conn *c = &conn->proto.httpc;
(void)session;
(void)frame;
infof(conn->data, "before_frame_send() was called\n");
- if(frame->hd.type == NGHTTP2_HEADERS &&
- frame->headers.cat == NGHTTP2_HCAT_REQUEST) {
- /* Get stream ID of our request */
- c->stream_id = frame->hd.stream_id;
- }
return 0;
}
static int on_frame_send(nghttp2_session *session,
@@ -400,7 +394,6 @@ static const nghttp2_session_callbacks callbacks = {
on_header /* nghttp2_on_header_callback */
#if NGHTTP2_VERSION_NUM >= 0x000400
, NULL /* nghttp2_select_padding_callback */
- , NULL /* nghttp2_adjust_priority_callback */
#endif
};
@@ -639,6 +632,8 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
char *hdbuf = (char*)mem;
char *end;
nghttp2_data_provider data_prd;
+ int32_t stream_id;
+
(void)sockindex;
infof(conn->data, "http2_send len=%zu\n", len);
@@ -744,20 +739,23 @@ static ssize_t http2_send(struct connectdata *conn, int sockindex,
case HTTPREQ_PUT:
data_prd.read_callback = data_source_read_callback;
data_prd.source.ptr = NULL;
- rv = nghttp2_submit_request(httpc->h2, NULL, nva, nheader, &data_prd,
- NULL);
+ stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
+ &data_prd, NULL);
break;
default:
- rv = nghttp2_submit_request(httpc->h2, NULL, nva, nheader, NULL, NULL);
+ stream_id = nghttp2_submit_request(httpc->h2, NULL, nva, nheader,
+ NULL, NULL);
}
Curl_safefree(nva);
- if(rv != 0) {
+ if(stream_id < 0) {
*err = CURLE_SEND_ERROR;
return -1;
}
+ httpc->stream_id = stream_id;
+
rv = nghttp2_session_send(httpc->h2);
if(rv != 0) {