Commit 4b01dfe3 authored by Dan Fandrich's avatar Dan Fandrich
Browse files

Fixed out of memory problems that caused torture test failures in tests

1021 and 1067.
parent fc09d105
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -6,6 +6,10 @@

                                  Changelog

Daniel Fandrich (26 Aug 2008)
- Fixed out of memory problems that caused torture test failures in tests
  1021 and 1067.

Yang Tse (26 Aug 2008)
- Added check and symbol definition for WIN32 file API usage in configure,
  supporting configure's --disable-largefile option for WIN32 targets also.
+5 −8
Original line number Diff line number Diff line
@@ -552,7 +552,7 @@ CURLcode Curl_store_ip_addr(struct connectdata *conn)
}

/* Used within the multi interface. Try next IP address, return TRUE if no
   more address exists */
   more address exists or error */
static bool trynextip(struct connectdata *conn,
                      int sockindex,
                      bool *connected)
@@ -578,8 +578,7 @@ static bool trynextip(struct connectdata *conn,
      conn->sock[sockindex] = sockfd;
      conn->ip_addr = ai;

      Curl_store_ip_addr(conn);
      return FALSE;
      return Curl_store_ip_addr(conn) != CURLE_OK;
    }
    ai = ai->ai_next;
  }
@@ -919,6 +918,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
  long timeout_ms;
  long timeout_per_addr;

  DEBUGASSERT(sockconn);
  *connected = FALSE; /* default to not connected */

  /* get the timeout left */
@@ -967,9 +967,10 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
    before = after;
  }  /* end of connect-to-each-address loop */

  *sockconn = sockfd;    /* the socket descriptor we've connected */

  if(sockfd == CURL_SOCKET_BAD) {
    /* no good connect was made */
    *sockconn = CURL_SOCKET_BAD;
    failf(data, "couldn't connect to host");
    return CURLE_COULDNT_CONNECT;
  }
@@ -980,10 +981,6 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
  if(addr)
    *addr = curr_addr;

  /* allow NULL-pointers to get passed in */
  if(sockconn)
    *sockconn = sockfd;    /* the socket descriptor we've connected */

  data->info.numconnects++; /* to track the number of connections made */

  return CURLE_OK;
+4 −0
Original line number Diff line number Diff line
@@ -2182,6 +2182,10 @@ CURLcode Curl_follow(struct SessionHandle *data,
        free(data->change.referer);

      data->change.referer = strdup(data->change.url);
      if (!data->change.referer) {
        data->change.referer_alloc = FALSE;
        return CURLE_OUT_OF_MEMORY;
      }
      data->change.referer_alloc = TRUE; /* yes, free this later */
    }
  }
+7 −1
Original line number Diff line number Diff line
@@ -2206,6 +2206,12 @@ CURLcode Curl_disconnect(struct connectdata *conn)
    }
  }

  /* Cleanup possible redirect junk */
  if(data->req.newurl) {
    free(data->req.newurl);
    data->req.newurl = NULL;
  }

  if(conn->handler->disconnect)
    /* This is set if protocol-specific cleanups should be made */
    conn->handler->disconnect(conn);
@@ -4483,7 +4489,7 @@ static CURLcode setup_conn(struct connectdata *conn,
  }
#endif

  return CURLE_OK;
  return result;
}

CURLcode Curl_connect(struct SessionHandle *data,