Commit f9fccc04 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Try fixing the u00001 instability by retrying polls which fail

with EINTR.

I suspect the underlying issue is that SIGCHLD is being sent
to a random thread and that happens to be the s1 thread on some
platforms.
parent b8d70b07
...@@ -387,6 +387,8 @@ http_rxchar(struct http *hp, int n, int eof) ...@@ -387,6 +387,8 @@ http_rxchar(struct http *hp, int n, int eof)
pfd[0].events = POLLIN; pfd[0].events = POLLIN;
pfd[0].revents = 0; pfd[0].revents = 0;
i = poll(pfd, 1, hp->timeout); i = poll(pfd, 1, hp->timeout);
if (i < 0 && errno == EINTR)
continue;
if (i == 0) if (i == 0)
vtc_log(hp->vl, hp->fatal, vtc_log(hp->vl, hp->fatal,
"HTTP rx timeout (fd:%d %u ms)", "HTTP rx timeout (fd:%d %u ms)",
...@@ -1215,6 +1217,8 @@ cmd_http_expect_close(CMD_ARGS) ...@@ -1215,6 +1217,8 @@ cmd_http_expect_close(CMD_ARGS)
fds[0].events = POLLIN | POLLERR; fds[0].events = POLLIN | POLLERR;
fds[0].revents = 0; fds[0].revents = 0;
i = poll(fds, 1, hp->timeout); i = poll(fds, 1, hp->timeout);
if (i < 0 && errno == EINTR)
continue;
if (i == 0) if (i == 0)
vtc_log(vl, hp->fatal, "Expected close: timeout"); vtc_log(vl, hp->fatal, "Expected close: timeout");
if (i != 1 || !(fds[0].revents & (POLLIN|POLLERR))) if (i != 1 || !(fds[0].revents & (POLLIN|POLLERR)))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment