mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-10 17:17:06 +02:00
MINOR: mux-quic: do not alloc quic_stream_desc for uni remote stream
qc_stream_desc type is required for sending. Thus, it is not required for an unidirectional remote stream where only receive will be performed.
This commit is contained in:
parent
c7dd9d6867
commit
93fba32430
@ -128,14 +128,13 @@ struct qcs *qcs_new(struct qcc *qcc, uint64_t id, enum qcs_type type)
|
|||||||
qcs->flags = QC_SF_NONE;
|
qcs->flags = QC_SF_NONE;
|
||||||
qcs->ctx = NULL;
|
qcs->ctx = NULL;
|
||||||
|
|
||||||
/* allocate transport layer stream descriptor
|
/* Allocate transport layer stream descriptor. Only needed for TX. */
|
||||||
*
|
if (!quic_stream_is_uni(id) || !quic_stream_is_remote(qcc, id)) {
|
||||||
* TODO qc_stream_desc is only useful for Tx buffering. It should not
|
struct quic_conn *qc = qcc->conn->handle.qc;
|
||||||
* be required for unidirectional remote streams.
|
qcs->stream = qc_stream_desc_new(id, type, qcs, qc);
|
||||||
*/
|
if (!qcs->stream)
|
||||||
qcs->stream = qc_stream_desc_new(id, type, qcs, qcc->conn->handle.qc);
|
goto err;
|
||||||
if (!qcs->stream)
|
}
|
||||||
goto err;
|
|
||||||
|
|
||||||
if (qcc->app_ops->attach) {
|
if (qcc->app_ops->attach) {
|
||||||
if (qcc->app_ops->attach(qcs))
|
if (qcc->app_ops->attach(qcs))
|
||||||
@ -187,9 +186,7 @@ struct qcs *qcs_new(struct qcc *qcc, uint64_t id, enum qcs_type type)
|
|||||||
if (qcs->ctx && qcc->app_ops->detach)
|
if (qcs->ctx && qcc->app_ops->detach)
|
||||||
qcc->app_ops->detach(qcs);
|
qcc->app_ops->detach(qcs);
|
||||||
|
|
||||||
if (qcs->stream)
|
qc_stream_desc_release(qcs->stream);
|
||||||
qc_stream_desc_release(qcs->stream);
|
|
||||||
|
|
||||||
pool_free(pool_head_qcs, qcs);
|
pool_free(pool_head_qcs, qcs);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -47,10 +47,14 @@ struct qc_stream_desc *qc_stream_desc_new(uint64_t id, enum qcs_type type, void
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Mark the stream descriptor <stream> as released. It will be freed as soon as
|
/* Mark the stream descriptor <stream> as released. It will be freed as soon as
|
||||||
* all its buffered data are acknowledged.
|
* all its buffered data are acknowledged. Does nothing if <stream> is already
|
||||||
|
* NULL.
|
||||||
*/
|
*/
|
||||||
void qc_stream_desc_release(struct qc_stream_desc *stream)
|
void qc_stream_desc_release(struct qc_stream_desc *stream)
|
||||||
{
|
{
|
||||||
|
if (!stream)
|
||||||
|
return;
|
||||||
|
|
||||||
/* A stream can be released only one time. */
|
/* A stream can be released only one time. */
|
||||||
BUG_ON(stream->release);
|
BUG_ON(stream->release);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user