diff --git a/src/mux_quic.c b/src/mux_quic.c index 8755f742a..30882ab2e 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -1037,12 +1037,6 @@ struct buffer *qcc_get_stream_txbuf(struct qcs *qcs, int *err) qcc->flags |= QC_CF_CONN_FULL; goto out; } - - if (!b_alloc(out, DB_MUX_TX)) { - TRACE_ERROR("buffer alloc failure", QMUX_EV_QCS_SEND, qcc->conn, qcs); - *err = 1; - goto out; - } } out: diff --git a/src/quic_stream.c b/src/quic_stream.c index 1d7a3c4de..a21391346 100644 --- a/src/quic_stream.c +++ b/src/quic_stream.c @@ -297,9 +297,13 @@ struct buffer *qc_stream_buf_alloc(struct qc_stream_desc *stream, if (!stream->buf) return NULL; - ++qc->stream_buf_count; + if (!b_alloc(&stream->buf->buf, DB_MUX_TX)) { + pool_free(pool_head_quic_stream_buf, stream->buf); + stream->buf = NULL; + return NULL; + } - stream->buf->buf = BUF_NULL; + ++qc->stream_buf_count; LIST_APPEND(&stream->buf_list, &stream->buf->list); return &stream->buf->buf;