diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/telnet.c | 20 | ||||
-rw-r--r-- | lib/transfer.c | 6 |
2 files changed, 17 insertions, 9 deletions
diff --git a/lib/telnet.c b/lib/telnet.c index 201bd6b50..cda76d446 100644 --- a/lib/telnet.c +++ b/lib/telnet.c @@ -872,20 +872,22 @@ CURLcode Curl_telnet(struct connectdata *conn) } } - if(FD_ISSET(sockfd, &readfd)) + if(FD_ISSET(sockfd, &readfd)) { Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread); - /* if we receive 0 or less here, the server closed the connection and - we bail out from this! */ - if (nread <= 0) { - keepon = FALSE; - break; - } + /* if we receive 0 or less here, the server closed the connection and + we bail out from this! */ + if (nread <= 0) { + keepon = FALSE; + break; + } - telrcv(data, (unsigned char *)buf, nread); + telrcv(data, (unsigned char *)buf, nread); + } } } - return CURLE_OK; + /* mark this as "no further transfer wanted" */ + return Curl_Transfer(conn, -1, -1, FALSE, NULL, -1, NULL); } diff --git a/lib/transfer.c b/lib/transfer.c index 09c1262cb..92b56600c 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -161,6 +161,12 @@ _Transfer(struct connectdata *c_conn) Curl_pgrsTime(data, TIMER_PRETRANSFER); Curl_speedinit(data); + if((conn->sockfd == -1) && + (conn->writesockfd == -1)) { + /* nothing to read, nothing to write, we're already OK! */ + return CURLE_OK; + } + if (!conn->getheader) { header = FALSE; if(conn->size > 0) |