diff options
Diffstat (limited to 'lib/telnet.c')
-rw-r--r-- | lib/telnet.c | 117 |
1 files changed, 40 insertions, 77 deletions
diff --git a/lib/telnet.c b/lib/telnet.c index 462e5956b..9deb13d75 100644 --- a/lib/telnet.c +++ b/lib/telnet.c @@ -73,8 +73,6 @@ #include <curl/curl.h> #include "transfer.h" #include "sendf.h" -#include "formdata.h" -#include "progress.h" #define _MPRINTF_REPLACE /* use our functions only */ #include <curl/mprintf.h> @@ -98,11 +96,6 @@ #define SB_LEN() (subend - subpointer) static -void telwrite(struct UrlData *data, - unsigned char *buffer, /* Data to write */ - int count); /* Number of bytes to write */ - -static void telrcv(struct UrlData *data, unsigned char *inbuf, /* Data received from socket */ int count); /* Number of bytes received */ @@ -826,36 +819,6 @@ void telrcv(struct UrlData *data, } } -static -void telwrite(struct UrlData *data, - unsigned char *buffer, /* Data to write */ - int count) /* Number of bytes to write */ -{ - unsigned char outbuf[2]; - int out_count = 0; - int bytes_written; - - while(count--) - { - outbuf[0] = *buffer++; - out_count = 1; - if(outbuf[0] == IAC) - outbuf[out_count++] = IAC; - -#ifndef USE_SSLEAY - bytes_written = swrite(data->firstsocket, outbuf, out_count); -#else - if (data->ssl.use) { - bytes_written = SSL_write(data->ssl.handle, (char *)outbuf, - out_count); - } - else { - bytes_written = swrite(data->firstsocket, outbuf, out_count); - } -#endif /* USE_SSLEAY */ - } -} - CURLcode Curl_telnet_done(struct connectdata *conn) { return CURLE_OK; @@ -870,7 +833,7 @@ CURLcode Curl_telnet(struct connectdata *conn) bool keepon = TRUE; char *buf = data->buffer; - int nread; + size_t nread; init_telnet(data); @@ -880,49 +843,49 @@ CURLcode Curl_telnet(struct connectdata *conn) keepfd = readfd; - while (keepon) - { - readfd = keepfd; /* set this every lap in the loop */ + while (keepon) { + readfd = keepfd; /* set this every lap in the loop */ - switch (select (sockfd + 1, &readfd, NULL, NULL, NULL)) - { - case -1: /* error, stop reading */ - keepon = FALSE; - continue; - case 0: /* timeout */ - break; - default: /* read! */ - if(FD_ISSET(1, &readfd)) - { - nread = read(1, buf, 255); - telwrite(data, (unsigned char *)buf, nread); - } - - if(FD_ISSET(sockfd, &readfd)) - { -#ifndef USE_SSLEAY - nread = sread (sockfd, buf, BUFSIZE - 1); -#else - if (data->ssl.use) { - nread = SSL_read (data->ssl.handle, buf, BUFSIZE - 1); - } - else { - nread = sread (sockfd, buf, BUFSIZE - 1); - } -#endif /* USE_SSLEAY */ - } + switch (select (sockfd + 1, &readfd, NULL, NULL, NULL)) { + case -1: /* error, stop reading */ + keepon = FALSE; + continue; + case 0: /* timeout */ + break; + default: /* read! */ + if(FD_ISSET(1, &readfd)) { /* read from stdin */ + unsigned char outbuf[2]; + int out_count = 0; + size_t bytes_written; + char *buffer = buf; + + nread = read(1, buf, 255); + + while(nread--) { + outbuf[0] = *buffer++; + out_count = 1; + if(outbuf[0] == IAC) + outbuf[out_count++] = IAC; + + Curl_write(conn, data->firstsocket, outbuf, + out_count, &bytes_written); + } + } - /* 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(FD_ISSET(sockfd, &readfd)) + Curl_read(conn, sockfd, buf, BUFSIZE - 1, &nread); - telrcv(data, (unsigned char *)buf, 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; } - } - return CURLE_OK; + + telrcv(data, (unsigned char *)buf, nread); + } + } + return CURLE_OK; } |