diff options
| -rw-r--r-- | lib/transfer.c | 6 | ||||
| -rw-r--r-- | lib/urldata.h | 2 | 
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/transfer.c b/lib/transfer.c index e76834eb3..d02baa4c3 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -1779,6 +1779,12 @@ CURLcode Curl_retry_request(struct connectdata *conn,      retry = TRUE;    }    if(retry) { +#define CONN_MAX_RETRIES 5 +    if(conn->retrycount++ >= CONN_MAX_RETRIES) { +      failf(data, "Connection died, tried %d times before giving up", +            CONN_MAX_RETRIES); +      return CURLE_SEND_ERROR; +    }      infof(conn->data, "Connection died, retrying a fresh connect\n");      *url = strdup(conn->data->change.url);      if(!*url) diff --git a/lib/urldata.h b/lib/urldata.h index 4ee568fd6..374bf4371 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1099,7 +1099,7 @@ struct connectdata {    struct http_connect_state *connect_state; /* for HTTP CONNECT */    struct connectbundle *bundle; /* The bundle we are member of */    int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */ - +  int retrycount; /* number of retries on a new connection */  #ifdef USE_UNIX_SOCKETS    char *unix_domain_socket;    BIT(abstract_unix_socket);  | 
