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
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:
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)
#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
/* FIXME: do we have Curl_printable_address-like with struct sockaddr* as
argument? */
- iptoprint = &((const struct sockaddr_in*)(&addr->addr))->sin_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
+ {
#ifdef ENABLE_IPV6
- if(addr->family==AF_INET6)
- iptoprint= &((const struct sockaddr_in6*)(&addr->addr))->sin6_addr;
+ if(addr->family==AF_INET6)
+ iptoprint= &((const struct sockaddr_in6*)(&addr->addr))->sin6_addr;
+ else
#endif
- Curl_inet_ntop(addr->family, iptoprint, addr_buf, sizeof(addr_buf));
- infof(data, " Trying %s... ", addr_buf);
+ 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);