mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
- Frank Ticheler provided a patch that fixes how libcurl connects to multiple
addresses, if one of them fails (ipv4-code).
This commit is contained in:
parent
e612f73374
commit
5c52cacc98
4
CHANGES
4
CHANGES
@ -7,6 +7,10 @@
|
||||
Changelog
|
||||
|
||||
|
||||
Daniel (8 October)
|
||||
- Frank Ticheler provided a patch that fixes how libcurl connects to multiple
|
||||
addresses, if one of them fails (ipv4-code).
|
||||
|
||||
Daniel (7 October)
|
||||
- Neil Dunbar provided a patch that now makes libcurl check SSL
|
||||
subjectAltNames when matching certs. This is apparently detailed in RFC2818
|
||||
|
@ -19,7 +19,8 @@ This release includes the following changes:
|
||||
|
||||
This release includes the following bugfixes:
|
||||
|
||||
o libcurl checks subjectAltNames when matching certs
|
||||
o fixed the ipv4 connect code when a DNS entry has multiple IPs
|
||||
o now checks subjectAltNames when matching certs
|
||||
o HTTP POST using read callback works again
|
||||
o builds fine on BeOS now
|
||||
o CURLOPT_COOKIE set to NULL no longer sends the previously set cookie
|
||||
@ -64,6 +65,6 @@ advice from friends like these:
|
||||
Early Ehlinger, Kevin Fisk, Jurij Smakov, Bjorn Reese, Tim Bartley, David
|
||||
Kimdon, Dominick Meglio, Markus Moeller, Giuseppe Attardi, James MacMillan,
|
||||
Neil Spring, Siddhartha Prakash Jain, Jon Turner, Vincent Bronner, Shard,
|
||||
Jeremy Friesner, Florian Schoppmann, Neil Dunbar
|
||||
Jeremy Friesner, Florian Schoppmann, Neil Dunbar, Frank Ticheler
|
||||
|
||||
Thanks! (and sorry if I forgot to mention someone)
|
||||
|
@ -620,23 +620,6 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
||||
failf(data, "no address available");
|
||||
return CURLE_COULDNT_CONNECT;
|
||||
}
|
||||
/* create an IPv4 TCP socket */
|
||||
sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if(-1 == sockfd) {
|
||||
failf(data, "couldn't create socket");
|
||||
return CURLE_COULDNT_CONNECT; /* big time error */
|
||||
}
|
||||
|
||||
if(conn->data->set.device) {
|
||||
/* user selected to bind the outgoing socket to a specified "device"
|
||||
before doing connect */
|
||||
CURLcode res = bindlocal(conn, sockfd);
|
||||
if(res)
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Convert socket to non-blocking type */
|
||||
Curl_nonblock(sockfd, TRUE);
|
||||
|
||||
/* This is the loop that attempts to connect to all IP-addresses we
|
||||
know for the given host. One by one. */
|
||||
@ -645,6 +628,24 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
||||
aliasindex++) {
|
||||
struct sockaddr_in serv_addr;
|
||||
|
||||
/* create an IPv4 TCP socket */
|
||||
sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if(-1 == sockfd) {
|
||||
failf(data, "couldn't create socket");
|
||||
return CURLE_COULDNT_CONNECT; /* big time error */
|
||||
}
|
||||
|
||||
if(conn->data->set.device) {
|
||||
/* user selected to bind the outgoing socket to a specified "device"
|
||||
before doing connect */
|
||||
CURLcode res = bindlocal(conn, sockfd);
|
||||
if(res)
|
||||
return res;
|
||||
}
|
||||
|
||||
/* Convert socket to non-blocking type */
|
||||
Curl_nonblock(sockfd, TRUE);
|
||||
|
||||
/* do this nasty work to do the connect */
|
||||
memset((char *) &serv_addr, '\0', sizeof(serv_addr));
|
||||
memcpy((char *)&(serv_addr.sin_addr),
|
||||
@ -706,6 +707,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
||||
|
||||
if(0 != rc) {
|
||||
/* get a new timeout for next attempt */
|
||||
sclose(sockfd);
|
||||
after = Curl_tvnow();
|
||||
timeout_ms -= Curl_tvdiff(after, before);
|
||||
if(timeout_ms < 0) {
|
||||
@ -717,9 +719,9 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(0 != rc) {
|
||||
/* no good connect was made */
|
||||
sclose(sockfd);
|
||||
*sockconn = -1;
|
||||
failf(data, "Connect failed");
|
||||
return CURLE_COULDNT_CONNECT;
|
||||
|
Loading…
Reference in New Issue
Block a user