- 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:
Родитель
459c664043
Коммит
3d29bda9f8
5
CHANGES
5
CHANGES
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче