Ignore SIGPIPE signals to simplify error handling.
This is an attempt to avoid server-side crashes/exits when the client abruptly closes its control connection, as found in some testing for #549. Fixes #550.
Этот коммит содержится в:
родитель
03224c9f56
Коммит
6f414a0408
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* iperf, Copyright (c) 2014, 2015, The Regents of the University of
|
* iperf, Copyright (c) 2014, 2015, 2017, The Regents of the University of
|
||||||
* California, through Lawrence Berkeley National Laboratory (subject
|
* California, through Lawrence Berkeley National Laboratory (subject
|
||||||
* to receipt of any required approvals from the U.S. Dept. of
|
* to receipt of any required approvals from the U.S. Dept. of
|
||||||
* Energy). All rights reserved.
|
* Energy). All rights reserved.
|
||||||
@ -130,6 +130,9 @@ run(struct iperf_test *test)
|
|||||||
if (setjmp(sigend_jmp_buf))
|
if (setjmp(sigend_jmp_buf))
|
||||||
iperf_got_sigend(test);
|
iperf_got_sigend(test);
|
||||||
|
|
||||||
|
/* Ignore SIGPIPE to simplify error handling */
|
||||||
|
signal(SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
switch (test->role) {
|
switch (test->role) {
|
||||||
case 's':
|
case 's':
|
||||||
if (test->daemon) {
|
if (test->daemon) {
|
||||||
@ -169,6 +172,7 @@ run(struct iperf_test *test)
|
|||||||
}
|
}
|
||||||
|
|
||||||
iperf_catch_sigend(SIG_DFL);
|
iperf_catch_sigend(SIG_DFL);
|
||||||
|
signal(SIGPIPE, SIG_DFL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user