* ext/socket/socket.c (socket_s_ip_address_list): fix wrongly filled

sin6_scope_id on KAME introduced by r40593 for OpenIndiana.
  KAME uses fe80:<scope_id>::<interface id> for link-local address
  internally.
  Setting sin6_scope_id causes it leaked.
  see also comments of sockaddr_obj().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2013-05-07 22:51:16 +00:00
Родитель 4264240759
Коммит bbcf97fad6
2 изменённых файлов: 10 добавлений и 1 удалений

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

@ -1,3 +1,12 @@
Wed May 8 06:42:56 2013 NARUSE, Yui <naruse@ruby-lang.org>
* ext/socket/socket.c (socket_s_ip_address_list): fix wrongly filled
sin6_scope_id on KAME introduced by r40593 for OpenIndiana.
KAME uses fe80:<scope_id>::<interface id> for link-local address
internally.
Setting sin6_scope_id causes it leaked.
see also comments of sockaddr_obj().
Tue May 7 22:12:34 2013 Tanaka Akira <akr@fsij.org> Tue May 7 22:12:34 2013 Tanaka Akira <akr@fsij.org>
* ext/readline/readline.c (insert_ignore_escape): Add a cast to * ext/readline/readline.c (insert_ignore_escape): Add a cast to

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

@ -1658,7 +1658,7 @@ socket_s_ip_address_list(VALUE self)
for (p = ifp; p; p = p->ifa_next) { for (p = ifp; p; p = p->ifa_next) {
if (p->ifa_addr != NULL && IS_IP_FAMILY(p->ifa_addr->sa_family)) { if (p->ifa_addr != NULL && IS_IP_FAMILY(p->ifa_addr->sa_family)) {
struct sockaddr *addr = p->ifa_addr; struct sockaddr *addr = p->ifa_addr;
#if defined(AF_INET6) #if defined(AF_INET6) && defined(__sun)
/* /*
* OpenIndiana SunOS 5.11 getifaddrs() returns IPv6 link local * OpenIndiana SunOS 5.11 getifaddrs() returns IPv6 link local
* address with sin6_scope_id == 0. * address with sin6_scope_id == 0.