forked from pool/iputils
20 lines
477 B
Diff
20 lines
477 B
Diff
|
--- ping.c 2013-07-23 11:02:26.364843595 +0200
|
||
|
+++ ping.c 2013-07-23 11:02:32.740900627 +0200
|
||
|
@@ -129,6 +129,16 @@
|
||
|
cap_t caps;
|
||
|
#endif
|
||
|
|
||
|
+ /*
|
||
|
+ * ping depend on SIGALARM to exit sometimes,
|
||
|
+ * but to popen, system, fork carry on parent signal handler
|
||
|
+ * so we mask it ourself.
|
||
|
+ */
|
||
|
+ sigset_t s;
|
||
|
+ sigaddset(&s, SIGALRM);
|
||
|
+ sigprocmask(SIG_UNBLOCK, &s, NULL);
|
||
|
+ set_signal(SIGALRM, doexit);
|
||
|
+
|
||
|
icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
|
||
|
socket_errno = errno;
|
||
|
|