From 63a8d2b172072e69c6dc94a3859a759ba0b2d397 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 21 Sep 2019 11:24:38 +0900 Subject: ngtcp2: compile with latest ngtcp2 + nghttp3 draft-23 Closes #4392 --- lib/vquic/ngtcp2.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/vquic/ngtcp2.c b/lib/vquic/ngtcp2.c index 6b3d53ee0..5fd07f7e8 100644 --- a/lib/vquic/ngtcp2.c +++ b/lib/vquic/ngtcp2.c @@ -1010,10 +1010,10 @@ static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id, return 0; } -static int cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id, - const uint8_t **pdata, - size_t *pdatalen, uint32_t *pflags, - void *user_data, void *stream_user_data) +static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id, + nghttp3_vec *vec, size_t veccnt, + uint32_t *pflags, void *user_data, + void *stream_user_data) { struct Curl_easy *data = stream_user_data; size_t nread; @@ -1021,12 +1021,13 @@ static int cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id, (void)conn; (void)stream_id; (void)user_data; + (void)veccnt; if(data->set.postfields) { - *pdata = data->set.postfields; - *pdatalen = data->state.infilesize; + vec[0].base = data->set.postfields; + vec[0].len = data->state.infilesize; *pflags = NGHTTP3_DATA_FLAG_EOF; - return 0; + return 1; } nread = CURLMIN(stream->upload_len, H3_SEND_SIZE - stream->h3out->used); @@ -1044,8 +1045,8 @@ static int cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id, out->used += nread; /* that's the chunk we return to nghttp3 */ - *pdata = &out->buf[out->windex]; - *pdatalen = nread; + vec[0].base = &out->buf[out->windex]; + vec[0].len = nread; if(out->windex == H3_SEND_SIZE) out->windex = 0; /* wrap */ @@ -1063,15 +1064,13 @@ static int cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id, if(stream->upload_done && !stream->upload_len && (stream->upload_left <= 0)) { H3BUGF(infof(data, "!!!!!!!!! cb_h3_readfunction sets EOF\n")); - *pdata = NULL; - *pdatalen = 0; *pflags = NGHTTP3_DATA_FLAG_EOF; + return 0; } else if(!nread) { - *pdatalen = 0; return NGHTTP3_ERR_WOULDBLOCK; } - return 0; + return 1; } /* Index where :authority header field will appear in request header @@ -1524,7 +1523,7 @@ static CURLcode ng_flush_egress(struct connectdata *conn, int sockfd, return CURLE_SEND_ERROR; } } - else if(ndatalen > 0) { + else if(ndatalen >= 0) { rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id, ndatalen); if(rv != 0) { failf(conn->data, -- cgit v1.2.3