diff --git a/CHANGES b/CHANGES index ab6a451a2..fc2728196 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,9 @@ Daniel (11 January 2005) +- Dan Torop cleaned up a few no longer used variables from David Phillips' + select() overhaul fix. + - Cyrill Osterwalder posted a detailed analysis about a bug that occurs when using a custom Host: header and curl fails to send a request on a re-used persistent connection and thus creates a new connection and resends it. It diff --git a/RELEASE-NOTES b/RELEASE-NOTES index b39f2e41c..abb9854de 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -36,6 +36,6 @@ advice from friends like these: Dan Fandrich, Peter Pentchev, Marcin Konicki, Rune Kleveland, David Shaw, Werner Koch, Gisle Vanem, Alex Neblett, Kai Sommerfeld, Marty Kuhrt, - Hzhijun, Pavel Orehov, Bruce Mitchener, Cyrill Osterwalder + Hzhijun, Pavel Orehov, Bruce Mitchener, Cyrill Osterwalder, Dan Torop Thanks! (and sorry if I forgot to mention someone) diff --git a/docs/libcurl/curl_multi_fdset.3 b/docs/libcurl/curl_multi_fdset.3 index 2faaad298..e7e84fc3c 100644 --- a/docs/libcurl/curl_multi_fdset.3 +++ b/docs/libcurl/curl_multi_fdset.3 @@ -16,13 +16,9 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle, .SH DESCRIPTION This function extracts file descriptor information from a given multi_handle. libcurl returns its fd_set sets. The application can use these to select() -on. The \fIcurl_multi_perform(3)\fI function should be called as soon as one +on. The \fIcurl_multi_perform(3)\fP function should be called as soon as one of them are ready to be read from or written to. -NOTE that once this call is made, you must not remove the sets you point to, -as libcurl will need to be able to read them. It needs them after select() -calls, to know if certain sockets are readable or writable. - You should also be aware that when doing select(), you should consider using a rather small (single-digit number of seconds) timeout and call \fIcurl_multi_perform\fP regularly - even if no activity has been seen on the diff --git a/lib/transfer.c b/lib/transfer.c index 7a15d3f3d..344413f0d 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -464,7 +464,6 @@ CURLcode Curl_readwrite(struct connectdata *conn, k->write_after_100_header = FALSE; k->keepon |= KEEP_WRITE; - k->wkeepfd = k->writefd; } } else @@ -1192,7 +1191,6 @@ CURLcode Curl_readwrite(struct connectdata *conn, go into the Expect: 100 state and await such a header */ k->wait100_after_headers = FALSE; /* headers sent */ k->write_after_100_header = TRUE; /* wait for the header */ - k->wkeepfd = k->writefd; /* set the keeper variable */ k->keepon &= ~KEEP_WRITE; /* disable writing */ k->start100 = Curl_tvnow(); /* timeout count starts now */ didwhat &= ~KEEP_WRITE; /* we didn't write anything actually */ @@ -1336,7 +1334,6 @@ CURLcode Curl_readwrite(struct connectdata *conn, /* we've waited long enough, continue anyway */ k->write_after_100_header = FALSE; k->keepon |= KEEP_WRITE; - k->wkeepfd = k->writefd; } } } @@ -1463,12 +1460,6 @@ CURLcode Curl_readwrite_init(struct connectdata *conn) k->keepon |= KEEP_WRITE; } } - - /* get these in backup variables to be able to restore them on each lap in - the select() loop */ - k->rkeepfd = k->readfd; - k->wkeepfd = k->writefd; - } return CURLE_OK; @@ -1491,7 +1482,6 @@ void Curl_single_fdset(struct connectdata *conn, if(conn->keep.keepon & KEEP_READ) { FD_SET(conn->sockfd, read_fd_set); *max_fd = conn->sockfd; - conn->keep.readfdp = read_fd_set; /* store the address of the set */ } if(conn->keep.keepon & KEEP_WRITE) { FD_SET(conn->writesockfd, write_fd_set); @@ -1500,7 +1490,6 @@ void Curl_single_fdset(struct connectdata *conn, to compare it nicely */ if((int)conn->writesockfd > *max_fd) *max_fd = conn->writesockfd; - conn->keep.writefdp = write_fd_set; /* store the address of the set */ } /* we don't use exceptions, only touch that one to prevent compiler warnings! */ @@ -1543,9 +1532,6 @@ Transfer(struct connectdata *conn) if(!conn->bits.getheader && conn->bits.no_body) return CURLE_OK; - k->writefdp = &k->writefd; /* store the address of the set */ - k->readfdp = &k->readfd; /* store the address of the set */ - while (!done) { int fd_read; int fd_write; diff --git a/lib/urldata.h b/lib/urldata.h index 3936b1526..311149d01 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -410,15 +410,6 @@ struct Curl_transfer_keeper { char *uploadbuf; curl_socket_t maxfd; - /* pointers to the actual descriptors we check */ - fd_set *readfdp; - fd_set *writefdp; - - /* the file descriptors to play with */ - fd_set readfd; - fd_set writefd; - fd_set rkeepfd; - fd_set wkeepfd; int keepon; bool upload_done; /* set to TRUE when doing chunked transfer-encoding upload