Skip to content

Commit 00167fb

Browse files
committed
fix: improve error handling and resource cleanup in close_main_control function
Signed-off-by: Dengfeng Liu <[email protected]>
1 parent ae8a0c7 commit 00167fb

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

control.c

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -910,15 +910,32 @@ clear_main_control()
910910
init_tmux_stream(&main_ctl->stream, get_next_session_id(), INIT);
911911
}
912912

913-
void
914-
close_main_control()
913+
void close_main_control()
915914
{
915+
if (!main_ctl) {
916+
debug(LOG_ERR, "main_ctl is NULL");
917+
return;
918+
}
919+
920+
// Clean up resources and state
916921
clear_main_control();
917922

918-
event_base_dispatch(main_ctl->connect_base);
919-
evdns_base_free(main_ctl->dnsbase, 0);
920-
event_base_free(main_ctl->connect_base);
923+
// Free event bases
924+
if (main_ctl->connect_base) {
925+
if (event_base_dispatch(main_ctl->connect_base) < 0) {
926+
debug(LOG_ERR, "event_base_dispatch failed");
927+
}
928+
929+
if (main_ctl->dnsbase) {
930+
evdns_base_free(main_ctl->dnsbase, 0);
931+
main_ctl->dnsbase = NULL;
932+
}
933+
934+
event_base_free(main_ctl->connect_base);
935+
main_ctl->connect_base = NULL;
936+
}
921937

938+
// Free the main control structure
922939
free_main_control();
923940
}
924941

0 commit comments

Comments
 (0)