aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/socket/socket.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 25dc188afb..dcab50d83b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Mar 26 22:31:10 2013 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/socket.c (sockaddr_len): return the shortest length for
+ unknown socket address.
+
Tue Mar 26 22:14:46 2013 Tanaka Akira <akr@fsij.org>
* thread.c (double2timeval): convert the infinity to TIME_MAX to avoid
diff --git a/ext/socket/socket.c b/ext/socket/socket.c
index 1ddaea9594..32548944b2 100644
--- a/ext/socket/socket.c
+++ b/ext/socket/socket.c
@@ -1512,7 +1512,7 @@ sockaddr_len(struct sockaddr *addr)
#endif
default:
- return (socklen_t)sizeof(struct sockaddr_in);
+ return (socklen_t)(offsetof(struct sockaddr, sa_family) + sizeof(addr->sa_family));
}
}