- sigaction(SIGPIPE, &sa, NULL);
- sa.sa_handler = signal_handler;
- sigaction(SIGHUP, &sa, NULL);
- sigaction(SIGTERM, &sa, NULL);
- sigaction(SIGINT, &sa, NULL);
- sigaction(SIGUSR1, &sa, NULL);
- silc_schedule_signal_register(silcd->schedule, SIGHUP, got_hup, NULL);
- silc_schedule_signal_register(silcd->schedule, SIGTERM, stop_server, NULL);
- silc_schedule_signal_register(silcd->schedule, SIGINT, stop_server, NULL);
- silc_schedule_signal_register(silcd->schedule, SIGUSR1, dump_stats, NULL);
+#if defined(SIGPIPE)
+ sigaction(SIGPIPE, &sa, NULL); /* Ignore broken pipes */
+#endif /* SIGPIPE*/
+#if defined(SIGXFSZ)
+ sigaction(SIGXFSZ, &sa, NULL); /* Ignore file limit exceeds */
+#endif /* SIGXFSZ */
+#if defined(SIGXCPU)
+ sigaction(SIGXCPU, &sa, NULL); /* Ignore CPU time limit exceeds */
+#endif /* SIGXCPU */
+
+ /* Handle specificly some other signals. */
+ silc_schedule_task_add_signal(silcd->schedule, SIGHUP, got_hup, NULL);
+ silc_schedule_task_add_signal(silcd->schedule, SIGTERM, stop_server, NULL);
+ silc_schedule_task_add_signal(silcd->schedule, SIGINT, stop_server, NULL);
+ silc_schedule_task_add_signal(silcd->schedule, SIGUSR1, dump_stats, NULL);