aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVladimir Homutov <vl@nginx.com>2020-10-07 10:14:02 +0300
committerVladimir Homutov <vl@nginx.com>2020-10-07 10:14:02 +0300
commit7250a7688da4ee9ad1a88fd1489bbb19ec2020ce (patch)
tree3e6bba77286c52940986efce992326d2653bf497 /src
parent46a01acdc0ba98014bcd282628453f59954f9a3a (diff)
downloadnginx-7250a7688da4ee9ad1a88fd1489bbb19ec2020ce.tar.gz
nginx-7250a7688da4ee9ad1a88fd1489bbb19ec2020ce.zip
QUIC: fixed memory leak in ngx_quic_send_frames().
The function did not free passed frames in case of error.
Diffstat (limited to 'src')
-rw-r--r--src/event/ngx_event_quic.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c
index c6a249b42..aff89b01d 100644
--- a/src/event/ngx_event_quic.c
+++ b/src/event/ngx_event_quic.c
@@ -3839,6 +3839,7 @@ ngx_quic_send_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx,
len = ngx_quic_create_frame(p, f);
if (len == -1) {
+ ngx_quic_free_frames(c, frames);
return NGX_ERROR;
}
@@ -3897,11 +3898,13 @@ ngx_quic_send_frames(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx,
pkt.num_len, pkt.trunc);
if (ngx_quic_encrypt(&pkt, ssl_conn, &res) != NGX_OK) {
+ ngx_quic_free_frames(c, frames);
return NGX_ERROR;
}
len = c->send(c, res.data, res.len);
if (len == NGX_ERROR || (size_t) len != res.len) {
+ ngx_quic_free_frames(c, frames);
return NGX_ERROR;
}