From 2e6b97a45d077979121b29484a8831034d47ef50 Mon Sep 17 00:00:00 2001 From: akr Date: Wed, 19 Feb 2014 10:37:43 +0000 Subject: * ext/socket: Bypass getaddrinfo() if node and serv are numeric. Reporeted by Naotoshi Seo. [ruby-core:60801] [Bug #9525] * ext/socket/extconf.rb: Detect struct sockaddr_in6.sin6_len. * ext/socket/sockport.h (SET_SIN6_LEN): New macro. (INIT_SOCKADDR_IN6): Ditto. * ext/socket/rubysocket.h (struct rb_addrinfo): Add allocated_by_malloc field. * ext/socket/raddrinfo.c (numeric_getaddrinfo): New function. (rb_getaddrinfo): Call numeric_getaddrinfo at first. (rb_freeaddrinfo): Free struct addrinfo properly when it is allocated by numeric_getaddrinfo. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/rubysocket.h | 1 + 1 file changed, 1 insertion(+) (limited to 'ext/socket/rubysocket.h') diff --git a/ext/socket/rubysocket.h b/ext/socket/rubysocket.h index 09ac47e9b9..a4fced8ca4 100644 --- a/ext/socket/rubysocket.h +++ b/ext/socket/rubysocket.h @@ -280,6 +280,7 @@ int rsock_getfamily(int sockfd); struct rb_addrinfo { struct addrinfo *ai; + int allocated_by_malloc; }; int rb_getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct rb_addrinfo **res); void rb_freeaddrinfo(struct rb_addrinfo *ai); -- cgit v1.2.3