From: Fabian Keil Date: Fri, 22 Jan 2021 12:01:35 +0000 (+0100) Subject: listen_loop(): Delay the call to ssl_release() X-Git-Tag: v_3_0_30~32 X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=commitdiff_plain;h=5c2e47de8805a1a489db8215a62859fd6b7e7d55;hp=e52674334610f4c2a1eb22b095c126527705f314 listen_loop(): Delay the call to ssl_release() ... and only release the TLS backend resources if there are no active connections left. Prevents crashes when exiting "gracefully" at the wrong time. --- diff --git a/jcc.c b/jcc.c index ab4956f0..310fb1ee 100644 --- a/jcc.c +++ b/jcc.c @@ -6183,11 +6183,6 @@ static void listen_loop(void) /* NOTREACHED unless FEATURE_GRACEFUL_TERMINATION is defined */ -#ifdef FEATURE_HTTPS_INSPECTION - /* Clean up. Aim: free all memory (no leaks) */ - ssl_release(); -#endif - #ifdef FEATURE_GRACEFUL_TERMINATION log_error(LOG_LEVEL_INFO, "Graceful termination requested."); @@ -6220,6 +6215,17 @@ static void listen_loop(void) freez(basedir); #endif +#ifdef FEATURE_HTTPS_INSPECTION + /* + * Only release TLS backed resources if there + * are no active connections left. + */ + if (clients->next == NULL) + { + ssl_release(); + } +#endif + log_error(LOG_LEVEL_INFO, "Exiting gracefully."); #if defined(_WIN32) && !defined(_WIN_CONSOLE)