mirror of
https://github.com/curl/curl.git
synced 2025-09-13 23:52:42 +03:00
telnet, use stack scratch buffer for do
- instead of data->state.buffer Closes #12793
This commit is contained in:
parent
a069c6aeb2
commit
0c05b8f813
28
lib/telnet.c
28
lib/telnet.c
|
@ -1320,7 +1320,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
ssize_t nread;
|
ssize_t nread;
|
||||||
struct curltime now;
|
struct curltime now;
|
||||||
bool keepon = TRUE;
|
bool keepon = TRUE;
|
||||||
char *buf = data->state.buffer;
|
char buffer[4*1024];
|
||||||
struct TELNET *tn;
|
struct TELNET *tn;
|
||||||
|
|
||||||
*done = TRUE; /* unconditionally */
|
*done = TRUE; /* unconditionally */
|
||||||
|
@ -1377,7 +1377,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
|
|
||||||
/* Keep on listening and act on events */
|
/* Keep on listening and act on events */
|
||||||
while(keepon) {
|
while(keepon) {
|
||||||
const DWORD buf_size = (DWORD)data->set.buffer_size;
|
const DWORD buf_size = (DWORD)sizeof(buffer);
|
||||||
DWORD waitret = WaitForMultipleObjects(obj_count, objs,
|
DWORD waitret = WaitForMultipleObjects(obj_count, objs,
|
||||||
FALSE, wait_timeout);
|
FALSE, wait_timeout);
|
||||||
switch(waitret) {
|
switch(waitret) {
|
||||||
|
@ -1388,7 +1388,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
if(data->set.is_fread_set) {
|
if(data->set.is_fread_set) {
|
||||||
size_t n;
|
size_t n;
|
||||||
/* read from user-supplied method */
|
/* read from user-supplied method */
|
||||||
n = data->state.fread_func(buf, 1, buf_size, data->state.in);
|
n = data->state.fread_func(buffer, 1, buf_size, data->state.in);
|
||||||
if(n == CURL_READFUNC_ABORT) {
|
if(n == CURL_READFUNC_ABORT) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
result = CURLE_READ_ERROR;
|
result = CURLE_READ_ERROR;
|
||||||
|
@ -1416,7 +1416,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
if(!readfile_read)
|
if(!readfile_read)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if(!ReadFile(stdin_handle, buf, buf_size,
|
if(!ReadFile(stdin_handle, buffer, buf_size,
|
||||||
&readfile_read, NULL)) {
|
&readfile_read, NULL)) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
result = CURLE_READ_ERROR;
|
result = CURLE_READ_ERROR;
|
||||||
|
@ -1424,7 +1424,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result = send_telnet_data(data, buf, readfile_read);
|
result = send_telnet_data(data, buffer, readfile_read);
|
||||||
if(result) {
|
if(result) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
break;
|
break;
|
||||||
|
@ -1435,14 +1435,14 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
|
|
||||||
case WAIT_OBJECT_0 + 1:
|
case WAIT_OBJECT_0 + 1:
|
||||||
{
|
{
|
||||||
if(!ReadFile(stdin_handle, buf, buf_size,
|
if(!ReadFile(stdin_handle, buffer, buf_size,
|
||||||
&readfile_read, NULL)) {
|
&readfile_read, NULL)) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
result = CURLE_READ_ERROR;
|
result = CURLE_READ_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = send_telnet_data(data, buf, readfile_read);
|
result = send_telnet_data(data, buffer, readfile_read);
|
||||||
if(result) {
|
if(result) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
break;
|
break;
|
||||||
|
@ -1464,7 +1464,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
}
|
}
|
||||||
if(events.lNetworkEvents & FD_READ) {
|
if(events.lNetworkEvents & FD_READ) {
|
||||||
/* read data from network */
|
/* read data from network */
|
||||||
result = Curl_read(data, sockfd, buf, data->set.buffer_size, &nread);
|
result = Curl_read(data, sockfd, buffer, sizeof(buffer), &nread);
|
||||||
/* read would've blocked. Loop again */
|
/* read would've blocked. Loop again */
|
||||||
if(result == CURLE_AGAIN)
|
if(result == CURLE_AGAIN)
|
||||||
break;
|
break;
|
||||||
|
@ -1480,7 +1480,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = telrcv(data, (unsigned char *) buf, nread);
|
result = telrcv(data, (unsigned char *) buffer, nread);
|
||||||
if(result) {
|
if(result) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
break;
|
break;
|
||||||
|
@ -1545,7 +1545,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
default: /* read! */
|
default: /* read! */
|
||||||
if(pfd[0].revents & POLLIN) {
|
if(pfd[0].revents & POLLIN) {
|
||||||
/* read data from network */
|
/* read data from network */
|
||||||
result = Curl_read(data, sockfd, buf, data->set.buffer_size, &nread);
|
result = Curl_read(data, sockfd, buffer, sizeof(buffer), &nread);
|
||||||
/* read would've blocked. Loop again */
|
/* read would've blocked. Loop again */
|
||||||
if(result == CURLE_AGAIN)
|
if(result == CURLE_AGAIN)
|
||||||
break;
|
break;
|
||||||
|
@ -1571,7 +1571,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
total_dl += nread;
|
total_dl += nread;
|
||||||
result = Curl_pgrsSetDownloadCounter(data, total_dl);
|
result = Curl_pgrsSetDownloadCounter(data, total_dl);
|
||||||
if(!result)
|
if(!result)
|
||||||
result = telrcv(data, (unsigned char *)buf, nread);
|
result = telrcv(data, (unsigned char *)buffer, nread);
|
||||||
if(result) {
|
if(result) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
break;
|
break;
|
||||||
|
@ -1589,12 +1589,12 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
nread = 0;
|
nread = 0;
|
||||||
if(poll_cnt == 2) {
|
if(poll_cnt == 2) {
|
||||||
if(pfd[1].revents & POLLIN) { /* read from in file */
|
if(pfd[1].revents & POLLIN) { /* read from in file */
|
||||||
nread = read(pfd[1].fd, buf, data->set.buffer_size);
|
nread = read(pfd[1].fd, buffer, sizeof(buffer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* read from user-supplied method */
|
/* read from user-supplied method */
|
||||||
nread = (int)data->state.fread_func(buf, 1, data->set.buffer_size,
|
nread = (int)data->state.fread_func(buffer, 1, sizeof(buffer),
|
||||||
data->state.in);
|
data->state.in);
|
||||||
if(nread == CURL_READFUNC_ABORT) {
|
if(nread == CURL_READFUNC_ABORT) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
|
@ -1605,7 +1605,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(nread > 0) {
|
if(nread > 0) {
|
||||||
result = send_telnet_data(data, buf, nread);
|
result = send_telnet_data(data, buffer, nread);
|
||||||
if(result) {
|
if(result) {
|
||||||
keepon = FALSE;
|
keepon = FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user