Просмотр исходного кода

LibreSSL on OpenBSD may get a SIGPIPE if the connection is broken.

Doug Nazar 1 год назад
Родитель
Сommit
83900d695b
2 измененных файлов с 8 добавлено и 2 удалено
  1. 4 2
      src/check_nrpe.c
  2. 4 0
      src/nrpe.c

+ 4 - 2
src/check_nrpe.c

@@ -842,16 +842,18 @@ void set_sig_handlers(void)
 {
 #ifdef HAVE_SIGACTION
 	struct sigaction sig_action;
-#endif
 
-#ifdef HAVE_SIGACTION
 	sig_action.sa_sigaction = NULL;
 	sig_action.sa_handler = alarm_handler;
 	sigfillset(&sig_action.sa_mask);
 	sig_action.sa_flags = SA_NODEFER | SA_RESTART;
 	sigaction(SIGALRM, &sig_action, NULL);
+
+	sig_action.sa_handler = SIG_IGN;
+	sigaction(SIGPIPE, &sig_action, NULL);
 #else
 	signal(SIGALRM, alarm_handler);
+	signal(SIGPIPE, SIG_IGN);
 #endif	 /* HAVE_SIGACTION */
 
 	/* set socket timeout */

+ 4 - 0
src/nrpe.c

@@ -515,10 +515,14 @@ void set_stdio_sigs(void)
 	sigaction(SIGQUIT, &sig_action, NULL);
 	sigaction(SIGTERM, &sig_action, NULL);
 	sigaction(SIGHUP, &sig_action, NULL);
+
+	sig_action.sa_handler = SIG_IGN;
+	sigaction(SIGPIPE, &sig_action, NULL);
 #else	 /* HAVE_SIGACTION */
 	signal(SIGQUIT, sighandler);
 	signal(SIGTERM, sighandler);
 	signal(SIGHUP, sighandler);
+	signal(SIGPIPE, SIG_IGN);
 #endif	 /* HAVE_SIGACTION */
 
 	logit(LOG_NOTICE, "Starting up daemon");	/* log info */