diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-06 11:04:45 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-06 11:04:45 +0000 |
commit | 67fe038d8f27a71b81a71048abd4174ded45a551 (patch) | |
tree | d927db7b306387827d611febfbfd2ae4e3671b5b | |
parent | c7135ddd2dcd59ca46ea3307b21f68dea7504ac8 (diff) | |
download | ruby-67fe038d8f27a71b81a71048abd4174ded45a551.tar.gz |
* ext/socket/socket.c (rsock_sys_fail_sockaddr): Takes struct sockaddr
and socklen_t instead of String object.
(rsock_sys_fail_addrinfo_or_sockaddr): Follow the above change.
* ext/socket/rubysocket.h (rsock_sys_fail_sockaddr): Follow the above
change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | ext/socket/rubysocket.h | 2 | ||||
-rw-r--r-- | ext/socket/socket.c | 15 |
3 files changed, 18 insertions, 8 deletions
@@ -1,3 +1,12 @@ +Sat Apr 6 19:24:59 2013 Tanaka Akira <akr@fsij.org> + + * ext/socket/socket.c (rsock_sys_fail_sockaddr): Takes struct sockaddr + and socklen_t instead of String object. + (rsock_sys_fail_addrinfo_or_sockaddr): Follow the above change. + + * ext/socket/rubysocket.h (rsock_sys_fail_sockaddr): Follow the above + change. + Sat Apr 6 14:28:23 2013 Tanaka Akira <akr@fsij.org> * ext/socket/rubysocket.h (SockAddrStringValueWithAddrinfo): New macro. diff --git a/ext/socket/rubysocket.h b/ext/socket/rubysocket.h index c68cff1d41..75d735e1bf 100644 --- a/ext/socket/rubysocket.h +++ b/ext/socket/rubysocket.h @@ -342,7 +342,7 @@ void rsock_init_socket_init(void); NORETURN(void rsock_sys_fail_host_port(const char *, VALUE, VALUE)); NORETURN(void rsock_sys_fail_path(const char *, VALUE)); -NORETURN(void rsock_sys_fail_sockaddr(const char *, VALUE addr)); +NORETURN(void rsock_sys_fail_sockaddr(const char *, struct sockaddr *addr, socklen_t len)); NORETURN(void rsock_sys_fail_addrinfo(const char *, VALUE rai)); NORETURN(void rsock_sys_fail_sockaddr_or_addrinfo(const char *, VALUE addr, VALUE rai)); diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 9783313ede..bb8bdac47c 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -47,14 +47,11 @@ rsock_sys_fail_path(const char *mesg, VALUE path) } void -rsock_sys_fail_sockaddr(const char *mesg, VALUE addr) +rsock_sys_fail_sockaddr(const char *mesg, struct sockaddr *addr, socklen_t len) { VALUE rai; - rai = rsock_addrinfo_new( - (struct sockaddr *)RSTRING_PTR(addr), - (socklen_t)RSTRING_LEN(addr), /* overflow should be checked already */ - PF_UNSPEC, 0, 0, Qnil, Qnil); + rai = rsock_addrinfo_new(addr, len, PF_UNSPEC, 0, 0, Qnil, Qnil); rsock_sys_fail_addrinfo(mesg, rai); } @@ -73,8 +70,12 @@ rsock_sys_fail_addrinfo(const char *mesg, VALUE rai) void rsock_sys_fail_addrinfo_or_sockaddr(const char *mesg, VALUE addr, VALUE rai) { - if (NIL_P(rai)) - rsock_sys_fail_sockaddr(mesg, addr); + if (NIL_P(rai)) { + StringValue(addr); + rsock_sys_fail_sockaddr(mesg, + (struct sockaddr *)RSTRING_PTR(addr), + (socklen_t)RSTRING_LEN(addr)); /* overflow should be checked already */ + } else rsock_sys_fail_addrinfo(mesg, rai); } |