aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/telnet.c20
-rw-r--r--lib/transfer.c6
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)