- 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

@ -7,6 +7,11 @@
Changelog
Daniel Stenberg (1 May 2008)
- 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.
Daniel Stenberg (29 Apr 2008)
- To make it easier for applications that want lots of magic stuff done on
redirections and thus cannot use CURLOPT_FOLLOWLOCATION easily, we now

View File

@ -26,6 +26,7 @@ This release includes the following bugfixes:
o the typechecker can be bypassed by defining CURL_DISABLE_TYPECHECK
o a pointer mixup could make the FTP code send bad user+password under rare
circumstances (found when using curlftpfs)
o the CURLOPT_OPENSOCKETFUNCTION can now be used to create a unix domain socket
This release includes the following known bugs:
@ -46,6 +47,6 @@ advice from friends like these:
Michal Marek, Daniel Fandrich, Scott Barrett, Alexey Simak, Daniel Black,
Rafa Muyo, Andre Guibert de Bruet, Brock Noland, Sandor Feldi, Stefan Krause,
David Shaw, Norbert Frese
David Shaw, Norbert Frese, Bart Whiteley
Thanks! (and sorry if I forgot to mention someone)

View File

@ -1861,6 +1861,7 @@ AC_CHECK_HEADERS(
arpa/inet.h \
net/if.h \
netinet/in.h \
sys/un.h \
netinet/tcp.h \
netdb.h \
sys/sockio.h \
@ -1907,6 +1908,9 @@ dnl default includes
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_SYS_UN_H
#include <sys/un.h>
#endif
]
)

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);