diff options
| -rw-r--r-- | CHANGES | 13 | ||||
| -rw-r--r-- | RELEASE-NOTES | 4 | ||||
| -rw-r--r-- | lib/select.c | 2 | 
3 files changed, 17 insertions, 2 deletions
@@ -6,6 +6,19 @@                                    Changelog +Daniel (5 December 2006) +- 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." +  Daniel (1 December 2006)  - Toon Verwaest reported that there are servers that send the Content-Range:    header in a third, not suppported by libcurl, format and we agreed that we diff --git a/RELEASE-NOTES b/RELEASE-NOTES index cb60c5887..28cf5837f 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -26,6 +26,7 @@ This release includes the following bugfixes:   o HTTP responses on persistent connections without Content-Length nor chunked     encoding are now considered to be without response body   o Content-Range: header parsing improved + o CPU 100% load when upload connection broke  Other curl-related news: @@ -42,6 +43,7 @@ This release would not have looked like this without help, code, reports and  advice from friends like these:   James Housley, Olaf Stueben, Yang Tse, Gisle Vanem, Bradford Bruce, - Ciprian Badescu, Dmitriy Sergeyev, Nir Soffer, Venkat Akella, Toon Verwaest + Ciprian Badescu, Dmitriy Sergeyev, Nir Soffer, Venkat Akella, Toon Verwaest, + Matt Witherspoon          Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/select.c b/lib/select.c index b25067b6c..672e5b8cf 100644 --- a/lib/select.c +++ b/lib/select.c @@ -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;    }  | 
