From 92f96292c86c7a5e6f636a3311bd55f9bca5ef3f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Luk=C3=A1=C5=A1=20Je=C5=BEek?= Date: Fri, 12 Mar 2021 13:36:37 +0100 Subject: [PATCH] daemon/http: fix assertion fail when data frame is recieved --- daemon/http.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/daemon/http.c b/daemon/http.c index b1ee725be..b04176350 100644 --- a/daemon/http.c +++ b/daemon/http.c @@ -536,13 +536,10 @@ static int data_chunk_recv_callback(nghttp2_session *h2, uint8_t flags, int32_t struct http_ctx *ctx = (struct http_ctx *)user_data; ssize_t remaining; ssize_t required; - assert(ctx->current_stream); - bool is_first = queue_len(ctx->streams) == 0 || queue_tail(ctx->streams) != ctx->current_stream->stream_id; + bool is_first; - if (ctx->current_stream->stream_id != stream_id) { - kr_log_verbose( - "[http] stream %d incomplete\n", - ctx->current_stream->stream_id); + if (ctx->current_stream == NULL || ctx->current_stream->stream_id != stream_id) { + kr_log_verbose("[http] incomplete stream\n"); if (!set_error_status(ctx, stream_id, 501, "incomplete stream")) return NGHTTP2_ERR_CALLBACK_FAILURE; return 0; @@ -550,6 +547,8 @@ static int data_chunk_recv_callback(nghttp2_session *h2, uint8_t flags, int32_t remaining = ctx->buf_size - ctx->submitted - ctx->buf_pos; required = len; + + is_first = queue_len(ctx->streams) == 0 || queue_tail(ctx->streams) != ctx->current_stream->stream_id; /* First data chunk of the new stream */ if (is_first) required += sizeof(uint16_t); -- 2.47.2