@@ -1576,10 +1576,11 @@ dhcpcd_signal_cb(int sig, void *arg)
15761576 stop_all_interfaces (ctx , opts ))
15771577 {
15781578 /* We stopped something, we will exit once that is done. */
1579+ eloop_exitallinners (exit_code );
15791580 return ;
15801581 }
15811582
1582- eloop_exit ( ctx -> eloop , exit_code );
1583+ eloop_exitall ( exit_code );
15831584}
15841585#endif
15851586
@@ -2309,9 +2310,13 @@ main(int argc, char **argv, char **envp)
23092310 signal (dhcpcd_signals_ignore [si ], SIG_IGN );
23102311
23112312 /* Save signal mask, block and redirect signals to our handler */
2312- eloop_signal_set_cb (ctx .eloop ,
2313+ if ( eloop_signal_set_cb (ctx .eloop ,
23132314 dhcpcd_signals , dhcpcd_signals_len ,
2314- dhcpcd_signal_cb , & ctx );
2315+ dhcpcd_signal_cb , & ctx ) == -1 )
2316+ {
2317+ logerr ("%s: eloop_signal_set_cb" , __func__ );
2318+ goto exit_failure ;
2319+ }
23152320 if (eloop_signal_mask (ctx .eloop ) == -1 ) {
23162321 logerr ("%s: eloop_signal_mask" , __func__ );
23172322 goto exit_failure ;
@@ -2789,7 +2794,7 @@ main(int argc, char **argv, char **envp)
27892794 if (ctx .options & DHCPCD_STARTED && !(ctx .options & DHCPCD_FORKED ))
27902795 loginfox (PACKAGE " exited" );
27912796#ifdef PRIVSEP
2792- if (ps_root_stop (& ctx ) == -1 )
2797+ if (ctx . ps_root != NULL && ps_root_stop (& ctx ) == -1 )
27932798 i = EXIT_FAILURE ;
27942799 eloop_free (ctx .ps_eloop );
27952800#endif
0 commit comments