diff --git a/examples/h09client.cc b/examples/h09client.cc index 19b3fbea42f20a624e9eee94b621a233ed2348e7..5fbfc0f702e15abb1343f1978f4f1e22e3953446 100644 --- a/examples/h09client.cc +++ b/examples/h09client.cc @@ -510,7 +510,7 @@ int acked_stream_data_offset(ngtcp2_conn *conn, int64_t stream_id, uint64_t offset, uint64_t datalen, void *user_data, void *stream_user_data) { auto c = static_cast<Client *>(user_data); - if (c->acked_stream_data_offset(stream_id, datalen) != 0) { + if (c->acked_stream_data_offset(stream_id, offset, datalen) != 0) { return NGTCP2_ERR_CALLBACK_FAILURE; } return 0; @@ -1651,12 +1651,13 @@ int Client::recv_stream_data(uint32_t flags, int64_t stream_id, return 0; } -int Client::acked_stream_data_offset(int64_t stream_id, uint64_t datalen) { +int Client::acked_stream_data_offset(int64_t stream_id, uint64_t offset, + uint64_t datalen) { auto it = streams_.find(stream_id); assert(it != std::end(streams_)); auto &stream = (*it).second; - assert(static_cast<uint64_t>(stream->reqbuf.end - stream->reqbuf.begin) <= - datalen); + assert(static_cast<uint64_t>(stream->reqbuf.end - stream->reqbuf.begin) >= + offset + datalen); return 0; } diff --git a/examples/h09client.h b/examples/h09client.h index 08658387f50ec823436b37d653322dae426fbee0..3181e0897a2536527165bc181855f2bf7dd99c5c 100644 --- a/examples/h09client.h +++ b/examples/h09client.h @@ -266,7 +266,8 @@ public: int submit_http_request(Stream *stream); int recv_stream_data(uint32_t flags, int64_t stream_id, const uint8_t *data, size_t datalen); - int acked_stream_data_offset(int64_t stream_id, uint64_t datalen); + int acked_stream_data_offset(int64_t stream_id, uint64_t offset, + uint64_t datalen); int extend_max_stream_data(int64_t stream_id, uint64_t max_data); void reset_idle_timer();