- 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
Родитель 459c664043
Коммит 3d29bda9f8
4 изменённых файлов: 31 добавлений и 7 удалений

Просмотреть файл

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

Просмотреть файл

@ -26,6 +26,7 @@ This release includes the following bugfixes:
o the typechecker can be bypassed by defining CURL_DISABLE_TYPECHECK 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 o a pointer mixup could make the FTP code send bad user+password under rare
circumstances (found when using curlftpfs) 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: 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, Michal Marek, Daniel Fandrich, Scott Barrett, Alexey Simak, Daniel Black,
Rafa Muyo, Andre Guibert de Bruet, Brock Noland, Sandor Feldi, Stefan Krause, 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) Thanks! (and sorry if I forgot to mention someone)

Просмотреть файл

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

Просмотреть файл

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