diff options
| -rw-r--r-- | lib/pop3.c | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/pop3.c b/lib/pop3.c index 71873a7cc..093b77e93 100644 --- a/lib/pop3.c +++ b/lib/pop3.c @@ -1376,12 +1376,15 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)    if(pp->sendleft)      return Curl_pp_flushsend(pp); -  /* Read the response from the server */ -  result = Curl_pp_readresp(sock, pp, &pop3code, &nread); -  if(result) -    return result; + do { +    /* Read the response from the server */ +    result = Curl_pp_readresp(sock, pp, &pop3code, &nread); +    if(result) +      return result; + +    if(!pop3code) +      break; -  if(pop3code) {      /* We have now received a full POP3 server response */      switch(pop3c->state) {      case POP3_SERVERGREET: @@ -1471,7 +1474,7 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)        state(conn, POP3_STOP);        break;      } -  } +  } while(!result && pop3c->state != POP3_STOP && Curl_pp_moredata(pp));    return result;  }  | 
