Commit 1a416cd2 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

singleipconnect: don't clobber errno

Save the errno value immediately after a connect() failure so that it
won't get reset to something else before we read it.

Bug: http://curl.haxx.se/mail/lib-2011-10/0066.html
Reported by: Frank Van Uffelen and Fabian Hiernaux
parent 54ef47a5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -836,7 +836,7 @@ singleipconnect(struct connectdata *conn,
{
  struct Curl_sockaddr_ex addr;
  int rc;
  int error;
  int error = 0;
  bool isconnected = FALSE;
  struct SessionHandle *data = conn->data;
  curl_socket_t sockfd;
@@ -946,6 +946,8 @@ singleipconnect(struct connectdata *conn,
  /* Connect TCP sockets, bind UDP */
  if(!isconnected && (conn->socktype == SOCK_STREAM)) {
    rc = connect(sockfd, &addr.sa_addr, addr.addrlen);
    if(-1 == rc)
      error = SOCKERRNO;
    conn->connecttime = Curl_tvnow();
    if(conn->num_addr > 1)
      Curl_expire(data, conn->timeoutms_per_addr);
@@ -954,8 +956,6 @@ singleipconnect(struct connectdata *conn,
    rc = 0;

  if(-1 == rc) {
    error = SOCKERRNO;

    switch (error) {
    case EINPROGRESS:
    case EWOULDBLOCK: