← Commit list

762ce8801b

Stefan Eissing
Stefan Eissing
2025-10-06
SUCCESS Duration: 224s

Subject

quiche: fix possible leaks on teardown

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/vquic/curl_quiche.c+14 -4
@@ -147,14 +147,22 @@ static void cf_quiche_ctx_free(struct cf_quiche_ctx *ctx)
static void cf_quiche_ctx_close(struct cf_quiche_ctx *ctx)
{
- if(ctx->h3c)
+ if(ctx->h3c) {
quiche_h3_conn_free(ctx->h3c);
- if(ctx->h3config)
+ ctx->h3c = NULL;
+ }
+ if(ctx->h3config) {
quiche_h3_config_free(ctx->h3config);
- if(ctx->qconn)
+ ctx->h3config = NULL;
+ }
+ if(ctx->qconn) {
quiche_conn_free(ctx->qconn);
- if(ctx->cfg)
+ ctx->qconn = NULL;
+ }
+ if(ctx->cfg) {
quiche_config_free(ctx->cfg);
+ ctx->cfg = NULL;
+ }
}
static CURLcode cf_flush_egress(struct Curl_cfilter *cf,
@@ -1494,6 +1502,7 @@ static void cf_quiche_close(struct Curl_cfilter *cf, struct Curl_easy *data)
bool done;
(void)cf_quiche_shutdown(cf, data, &done);
cf_quiche_ctx_close(cf->ctx);
+ cf->connected = FALSE;
}
}
@@ -1501,6 +1510,7 @@ static void cf_quiche_destroy(struct Curl_cfilter *cf, struct Curl_easy *data)
{
(void)data;
if(cf->ctx) {
+ cf_quiche_ctx_close(cf->ctx);
cf_quiche_ctx_free(cf->ctx);
cf->ctx = NULL;
}