- Bart Whiteley provided a patch that made libcurl work properly when an app

uses the CURLOPT_OPENSOCKETFUNCTION callback to create a unix domain socket
  to a http server.
This commit is contained in:
Daniel Stenberg
2008-05-01 21:34:34 +00:00
parent 459c664043
commit 3d29bda9f8
4 changed files with 31 additions and 7 deletions

View File

@@ -34,6 +34,9 @@
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h> /* <netinet/tcp.h> may need it */
#endif
#ifdef HAVE_SYS_UN_H
#include <sys/un.h> /* for sockaddr_un */
#endif
#ifdef HAVE_NETINET_TCP_H
#include <netinet/tcp.h> /* for TCP_NODELAY */
#endif
@@ -766,13 +769,24 @@ singleipconnect(struct connectdata *conn,
/* FIXME: do we have Curl_printable_address-like with struct sockaddr* as
argument? */
iptoprint = &((const struct sockaddr_in*)(&addr->addr))->sin_addr;
#ifdef ENABLE_IPV6
if(addr->family==AF_INET6)
iptoprint= &((const struct sockaddr_in6*)(&addr->addr))->sin6_addr;
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
if(addr->family==AF_UNIX)
infof(data, " Trying %s... ",
((const struct sockaddr_un*)(&addr->addr))->sun_path);
else
#endif
Curl_inet_ntop(addr->family, iptoprint, addr_buf, sizeof(addr_buf));
infof(data, " Trying %s... ", addr_buf);
{
#ifdef ENABLE_IPV6
if(addr->family==AF_INET6)
iptoprint= &((const struct sockaddr_in6*)(&addr->addr))->sin6_addr;
else
#endif
iptoprint = &((const struct sockaddr_in*)(&addr->addr))->sin_addr;
if(Curl_inet_ntop(addr->family, iptoprint, addr_buf,
sizeof(addr_buf)) != NULL)
infof(data, " Trying %s... ", addr_buf);
}
if(data->set.tcp_nodelay)
tcpnodelay(conn, sockfd);