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
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)
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. */
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),
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) {
}
break;
}
+
if(0 != rc) {
/* no good connect was made */
- sclose(sockfd);
*sockconn = -1;
failf(data, "Connect failed");
return CURLE_COULDNT_CONNECT;