If the client (curl plugin) disconnects early then the whole test can fail with SIGPIPE, and it can be unclear why the test failed -- you just get the mysterious error "FAIL test (exit status: 141)". We always check the return code from write(2) so just report EPIPE failures through that.
In addition, a future extension to this test will allow writes to fail with EPIPE in some circumstances. --- tests/web-server.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/web-server.c b/tests/web-server.c index 9b37326c0..dbc8bc845 100644 --- a/tests/web-server.c +++ b/tests/web-server.c @@ -43,6 +43,7 @@ #include <fcntl.h> #include <unistd.h> #include <errno.h> +#include <signal.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/socket.h> @@ -90,6 +91,13 @@ cleanup (void) rmdir (tmpdir); } +static void +ignore_sigpipe (void) +{ + struct sigaction sa = { .sa_flags = SA_RESTART, .sa_handler = SIG_IGN }; + sigaction (SIGPIPE, &sa, NULL); +} + const char * web_server (const char *filename, check_request_t _check_request) { @@ -97,6 +105,8 @@ web_server (const char *filename, check_request_t _check_request) pthread_t thread; int err; + ignore_sigpipe (); + check_request = _check_request; /* Open the file. */ -- 2.40.1 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs