Commit 8b275718 authored by Steve Holme's avatar Steve Holme
Browse files

pop3.c: Fixed failure detection during TLS upgrade

pop3_state_upgrade_tls() would attempt to incorrectly complete the
upgrade to pop3s and start the CAPA command if
Curl_ssl_connect_nonblocking() returned a failure code and if ssldone
was set to TRUE. This would only happen when a non-blocking API hadn't
been provided by the SSL implementation and curlssl_connect() was
called underneath.
parent 379d63ec
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -568,10 +568,8 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn,
    else
      result = pop3_state_capa(conn);
  }
  else {
    state(conn, POP3_UPGRADETLS);
  else
    result = pop3_state_upgrade_tls(conn);
  }

  return result;
}
@@ -583,10 +581,15 @@ static CURLcode pop3_state_upgrade_tls(struct connectdata *conn)

  result = Curl_ssl_connect_nonblocking(conn, FIRSTSOCKET, &pop3c->ssldone);

  if(!result) {
    if(pop3c->state != POP3_UPGRADETLS)
      state(conn, POP3_UPGRADETLS);

    if(pop3c->ssldone) {
      pop3_to_pop3s(conn);
      result = pop3_state_capa(conn);
    }
  }

  return result;
}