mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-15 21:59:41 -04:00
MINOR/OPTIM: mux-quic: do not allocate rxbuf on standalone FIN
STREAM FIN may be received without any payload. However, qcc_recv() always called qcs_get_ncbuf() indiscriminately, which may allocate a QCS Rx buffer. This is unneeded as there is no payload to store. Improve this by skipping qcs_get_ncbuf() invokation when dealing with a standalone FIN signal. This should prevent superfluous buffer allocation.
This commit is contained in:
parent
861b11334c
commit
20dc8e4ec2
1 changed files with 6 additions and 6 deletions
|
|
@ -1575,12 +1575,6 @@ int qcc_recv(struct qcc *qcc, uint64_t id, uint64_t len, uint64_t offset,
|
|||
}
|
||||
}
|
||||
|
||||
if (!qcs_get_ncbuf(qcs, &qcs->rx.ncbuf) || ncb_is_null(&qcs->rx.ncbuf)) {
|
||||
TRACE_ERROR("receive ncbuf alloc failure", QMUX_EV_QCC_RECV|QMUX_EV_QCS_RECV, qcc->conn, qcs);
|
||||
qcc_set_error(qcc, QC_ERR_INTERNAL_ERROR, 0);
|
||||
goto err;
|
||||
}
|
||||
|
||||
TRACE_DATA("newly received offset", QMUX_EV_QCC_RECV|QMUX_EV_QCS_RECV, qcc->conn, qcs);
|
||||
if (offset < qcs->rx.offset) {
|
||||
size_t diff = qcs->rx.offset - offset;
|
||||
|
|
@ -1591,6 +1585,12 @@ int qcc_recv(struct qcc *qcc, uint64_t id, uint64_t len, uint64_t offset,
|
|||
}
|
||||
|
||||
if (len) {
|
||||
if (!qcs_get_ncbuf(qcs, &qcs->rx.ncbuf) || ncb_is_null(&qcs->rx.ncbuf)) {
|
||||
TRACE_ERROR("receive ncbuf alloc failure", QMUX_EV_QCC_RECV|QMUX_EV_QCS_RECV, qcc->conn, qcs);
|
||||
qcc_set_error(qcc, QC_ERR_INTERNAL_ERROR, 0);
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = ncb_add(&qcs->rx.ncbuf, offset - qcs->rx.offset, data, len, NCB_ADD_COMPARE);
|
||||
switch (ret) {
|
||||
case NCB_RET_OK:
|
||||
|
|
|
|||
Loading…
Reference in a new issue