… | |
… | |
206 | act.sa_flags = SA_RESETHAND; |
206 | act.sa_flags = SA_RESETHAND; |
207 | act.sa_handler = sigterm_handler; sigaction (SIGINT , &act, NULL); |
207 | act.sa_handler = sigterm_handler; sigaction (SIGINT , &act, NULL); |
208 | act.sa_handler = sigterm_handler; sigaction (SIGTERM, &act, NULL); |
208 | act.sa_handler = sigterm_handler; sigaction (SIGTERM, &act, NULL); |
209 | } |
209 | } |
210 | |
210 | |
211 | struct Xob {//D |
|
|
212 | void wcbx () |
|
|
213 | { |
|
|
214 | printf ("wcbx %p\n", pthread_self()); |
|
|
215 | } |
|
|
216 | void dcbx () |
|
|
217 | { |
|
|
218 | printf ("dcbx %p\n", pthread_self()); |
|
|
219 | } |
|
|
220 | }; |
|
|
221 | |
|
|
222 | int |
211 | int |
223 | main (int argc, char **argv, char **envp) |
212 | main (int argc, char **argv, char **envp) |
224 | { |
213 | { |
225 | ERR_load_crypto_strings (); // we have the RAM |
214 | ERR_load_crypto_strings (); // we have the RAM |
226 | |
215 | |
… | |
… | |
296 | exit (EXIT_SUCCESS); |
285 | exit (EXIT_SUCCESS); |
297 | |
286 | |
298 | setup_signals (); |
287 | setup_signals (); |
299 | |
288 | |
300 | if (!network.setup ()) |
289 | if (!network.setup ()) |
|
|
290 | if (network.drop_privileges ()) |
301 | { |
291 | { |
302 | ev_run (EV_DEFAULT_ 0); |
292 | ev_run (EV_DEFAULT_ 0); |
303 | cleanup_and_exit (EXIT_FAILURE); |
293 | cleanup_and_exit (EXIT_FAILURE); |
304 | } |
294 | } |
305 | |
295 | |
306 | slog (L_ERR, _("unrecoverable error while setting up network, exiting.")); |
296 | slog (L_CRIT, _("unrecoverable error while setting up network, exiting.")); |
307 | cleanup_and_exit (EXIT_FAILURE); |
297 | cleanup_and_exit (EXIT_FAILURE); |
308 | } |
298 | } |
309 | |
299 | |