mirror of
https://github.com/curl/curl.git
synced 2026-08-24 18:43:32 +03:00
Matt Witherspoon fixed a problem case when the CPU load went to 100% when a
HTTP upload was disconnected: "What appears to be happening is that my system (Linux 2.6.17 and 2.6.13) is setting *only* POLLHUP on poll() when the conditions in my previous mail occur. As you can see, select.c:Curl_select() does not check for POLLHUP. So basically what was happening, is poll() was returning immediately (with POLLHUP set), but when Curl_select() looked at the bits, neither POLLERR or POLLOUT was set. This still caused Curl_readwrite() to be called, which quickly returned. Then the transfer() loop kept continuing at full speed forever."
This commit is contained in:
parent
b555c60e49
commit
3ce43764be
3 changed files with 17 additions and 2 deletions
|
|
@ -124,7 +124,7 @@ int Curl_select(curl_socket_t readfd, curl_socket_t writefd, int timeout_ms)
|
|||
if (writefd != CURL_SOCKET_BAD) {
|
||||
if (pfd[num].revents & POLLOUT)
|
||||
ret |= CSELECT_OUT;
|
||||
if (pfd[num].revents & POLLERR)
|
||||
if (pfd[num].revents & (POLLERR|POLLHUP))
|
||||
ret |= CSELECT_ERR;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue