]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon: avoid memory leaks under heavy load when using tls over outgoing tcp connection
authorGrigorii Demidov <grigorii.demidov@nic.cz>
Mon, 8 Jan 2018 09:12:17 +0000 (10:12 +0100)
committerPetr Špaček <petr.spacek@nic.cz>
Mon, 8 Jan 2018 11:01:02 +0000 (12:01 +0100)
daemon/tls.c
daemon/tls.h
daemon/worker.c

index e9ffa97105306c5028684ed07b00da4b6520a738..17e0bf5bbdc0ee729ce069f0d36fcde44c70559c 100644 (file)
@@ -1041,12 +1041,14 @@ int tls_client_set_hs_state(struct tls_client_ctx_t *ctx, tls_client_hs_state_t
 }
 
 int tls_client_ctx_set_params(struct tls_client_ctx_t *ctx,
-                             const struct tls_client_paramlist_entry *entry)
+                             const struct tls_client_paramlist_entry *entry,
+                             struct session *session)
 {
        if (!ctx) {
                return kr_error(EINVAL);
        }
        ctx->params = entry;
+       ctx->session = session;
        return kr_ok();
 }
 
index d13b70ebf042cbf023c5cdd59f458a08fcf55ba5..b6a32c55d9120fc9c042e61e855a763acb63e9b2 100644 (file)
@@ -115,4 +115,5 @@ tls_client_hs_state_t tls_client_get_hs_state(const struct tls_client_ctx_t *ctx
 int tls_client_set_hs_state(struct tls_client_ctx_t *ctx, tls_client_hs_state_t state);
 
 int tls_client_ctx_set_params(struct tls_client_ctx_t *ctx,
-                             const struct tls_client_paramlist_entry *entry);
+                             const struct tls_client_paramlist_entry *entry,
+                             struct session *session);
index aebeb8e2f1d1dffa7a87a5033ac94f9eb3e95a18..522e5803b66f76e1367e301bc7f298b24bf96f6b 100644 (file)
@@ -1627,7 +1627,7 @@ static int qr_task_step(struct qr_task *task,
                                        subreq_finalize(task, packet_source, packet);
                                        return qr_task_step(task, NULL, NULL);
                                }
-                               tls_client_ctx_set_params(tls_ctx, entry);
+                               tls_client_ctx_set_params(tls_ctx, entry, session);
                                session->tls_client_ctx = tls_ctx;
                                session->has_tls = true;
                        }