mirror of
https://github.com/curl/curl.git
synced 2026-05-30 04:57:33 +03:00
pop3: function could get the ->transfer field wrong
In pop3_perform(), pop3->transfer was derived from the old data->req.no_body. Then, pop3_perform_command() re-computed data->req.no_body. Now we instead call pop3_perform_command() first. Reported-by: Joshua Rogers Closes #19039
This commit is contained in:
parent
27375ca364
commit
67c4256f7e
1 changed files with 7 additions and 8 deletions
15
lib/pop3.c
15
lib/pop3.c
|
|
@ -1377,18 +1377,17 @@ static CURLcode pop3_perform(struct Curl_easy *data, bool *connected,
|
|||
|
||||
DEBUGF(infof(data, "DO phase starts"));
|
||||
|
||||
if(data->req.no_body) {
|
||||
/* Requested no body means no transfer */
|
||||
pop3->transfer = PPTRANSFER_INFO;
|
||||
}
|
||||
|
||||
*dophase_done = FALSE; /* not done yet */
|
||||
|
||||
/* Start the first command in the DO phase */
|
||||
/* Start the first command in the DO phase, may alter data->req.no_body */
|
||||
result = pop3_perform_command(data);
|
||||
if(result)
|
||||
return result;
|
||||
|
||||
if(data->req.no_body)
|
||||
/* Requested no body means no transfer */
|
||||
pop3->transfer = PPTRANSFER_INFO;
|
||||
|
||||
*dophase_done = FALSE; /* not done yet */
|
||||
|
||||
/* Run the state-machine */
|
||||
result = pop3_multi_statemach(data, dophase_done);
|
||||
*connected = Curl_conn_is_connected(data->conn, FIRSTSOCKET);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue