Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
When INET6 is not defined, meaning that IPv6 is not supported, need to
[rsync/rsync.git]
/
socket.c
diff --git
a/socket.c
b/socket.c
index
2c2191e
..
0ad8a16
100644
(file)
--- a/
socket.c
+++ b/
socket.c
@@
-298,6
+298,7
@@
static int open_socket_in(int type, int port, const char *bind_address,
case EPROTONOSUPPORT:
case EAFNOSUPPORT:
case EPFNOSUPPORT:
case EPROTONOSUPPORT:
case EAFNOSUPPORT:
case EPFNOSUPPORT:
+ case EINVAL:
/* See if there's another address that will work... */
continue;
}
/* See if there's another address that will work... */
continue;
}
@@
-578,6
+579,12
@@
char *client_addr(int fd)
}
}
+static int get_sockaddr_family(const struct sockaddr_storage *ss)
+{
+ return ((struct sockaddr *) ss)->sa_family;
+}
+
+
/**
* Return the DNS name of the client
**/
/**
* Return the DNS name of the client
**/
@@
-606,7
+613,7
@@
char *client_name(int fd)
}
#ifdef INET6
}
#ifdef INET6
- if (
ss.ss_family
== AF_INET6 &&
+ if (
get_sockaddr_family(&ss)
== AF_INET6 &&
IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&ss)->sin6_addr)) {
struct sockaddr_in6 sin6;
struct sockaddr_in *sin;
IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&ss)->sin6_addr)) {
struct sockaddr_in6 sin6;
struct sockaddr_in *sin;
@@
-650,7
+657,7
@@
char *client_name(int fd)
/* XXX sin6_flowinfo and other fields */
for (res = res0; res; res = res->ai_next) {
/* XXX sin6_flowinfo and other fields */
for (res = res0; res; res = res->ai_next) {
- if (res->ai_family !=
ss.ss_family
)
+ if (res->ai_family !=
get_sockaddr_family(&ss)
)
continue;
if (res->ai_addrlen != length)
continue;
continue;
if (res->ai_addrlen != length)
continue;