 +    ngx_http_v3_close_stream(r->qstream, 0);
 +}
 +
++void
++ngx_http_v3_stop_stream_read(ngx_http_v3_stream_t *stream, ngx_int_t rc)
++{
++    ngx_http_v3_connection_t  *h3c;
++
++    if (!stream) {
++        return;
++    }
++
++    h3c = stream->connection;
++
++    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, h3c->connection->log, 0,
++                   "http3 stream shutdown read %ui", stream->id);
++
++    quiche_conn_stream_shutdown(h3c->connection->quic->conn,
++                                stream->id,
++                                QUICHE_SHUTDOWN_READ, rc);
++}
++
 +
 +static void
 +ngx_http_v3_finalize_connection(ngx_http_v3_connection_t *h3c,

     ngx_http_log_handler_pt           log_handler;
 
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
index c4f092e59..2f8514418 100644
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -85,6 +85,13 @@ ngx_http_read_client_request_body(ngx_http_request_t *r,

+        stream->skip_data = 1;
+        fc->timedout = 1;
+
+        /* disable stream read to avoid pointless data events */
+        ngx_http_v3_stop_stream_read(stream, 0);
+
+        return NGX_HTTP_REQUEST_TIME_OUT;
+    }
+
