[04/24] thrift git commit: THRIFT-3947 use sockaddr_storage with getsockname for future transport compatibility (ipv6) Client: Lua
THRIFT-3947 use sockaddr_storage with getsockname for future transport compatibility (ipv6) Client: Lua This closes #1127 Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/ea5ea8b4 Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/ea5ea8b4 Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/ea5ea8b4 Branch: refs/heads/0.10.0 Commit: ea5ea8b4c85ffced36a88b93b35a4671478921ab Parents: fd83224 Author: James E. King, IIIAuthored: Sat Nov 12 15:12:33 2016 -0500 Committer: James E. King, III Committed: Sat Nov 12 15:12:33 2016 -0500 -- lib/lua/src/usocket.c | 21 ++--- 1 file changed, 14 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/thrift/blob/ea5ea8b4/lib/lua/src/usocket.c -- diff --git a/lib/lua/src/usocket.c b/lib/lua/src/usocket.c index d97112c..864fa36 100644 --- a/lib/lua/src/usocket.c +++ b/lib/lua/src/usocket.c @@ -131,20 +131,27 @@ T_ERRCODE socket_bind(p_socket sock, p_sa addr, int addr_len) { } T_ERRCODE socket_get_info(p_socket sock, short *port, char *buf, size_t len) { - struct sockaddr_in sa; + struct sockaddr_storage sa; memset(, 0, sizeof(sa)); socklen_t addrlen = sizeof(sa); int rc = getsockname(*sock, (struct sockaddr*), ); if (!rc) { -char *addr = inet_ntoa(sa.sin_addr); -*port = ntohs(sa.sin_port); -if (strlen(addr) < len) { - len = strlen(addr); +if (sa.ss_family == AF_INET6) { + struct sockaddr_in6* sin = (struct sockaddr_in6*)(); + if (!inet_ntop(AF_INET6, >sin6_addr, buf, len)) { +return errno; + } + *port = ntohs(sin->sin6_port); +} else { + struct sockaddr_in* sin = (struct sockaddr_in*)(); + if (!inet_ntop(AF_INET, >sin_addr, buf, len)) { +return errno; + } + *port = ntohs(sin->sin_port); } -memcpy(buf, addr, len); return SUCCESS; } - return rc; + return errno; }
thrift git commit: THRIFT-3947 use sockaddr_storage with getsockname for future transport compatibility (ipv6) Client: Lua
Repository: thrift Updated Branches: refs/heads/master fd832242b -> ea5ea8b4c THRIFT-3947 use sockaddr_storage with getsockname for future transport compatibility (ipv6) Client: Lua This closes #1127 Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/ea5ea8b4 Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/ea5ea8b4 Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/ea5ea8b4 Branch: refs/heads/master Commit: ea5ea8b4c85ffced36a88b93b35a4671478921ab Parents: fd83224 Author: James E. King, IIIAuthored: Sat Nov 12 15:12:33 2016 -0500 Committer: James E. King, III Committed: Sat Nov 12 15:12:33 2016 -0500 -- lib/lua/src/usocket.c | 21 ++--- 1 file changed, 14 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/thrift/blob/ea5ea8b4/lib/lua/src/usocket.c -- diff --git a/lib/lua/src/usocket.c b/lib/lua/src/usocket.c index d97112c..864fa36 100644 --- a/lib/lua/src/usocket.c +++ b/lib/lua/src/usocket.c @@ -131,20 +131,27 @@ T_ERRCODE socket_bind(p_socket sock, p_sa addr, int addr_len) { } T_ERRCODE socket_get_info(p_socket sock, short *port, char *buf, size_t len) { - struct sockaddr_in sa; + struct sockaddr_storage sa; memset(, 0, sizeof(sa)); socklen_t addrlen = sizeof(sa); int rc = getsockname(*sock, (struct sockaddr*), ); if (!rc) { -char *addr = inet_ntoa(sa.sin_addr); -*port = ntohs(sa.sin_port); -if (strlen(addr) < len) { - len = strlen(addr); +if (sa.ss_family == AF_INET6) { + struct sockaddr_in6* sin = (struct sockaddr_in6*)(); + if (!inet_ntop(AF_INET6, >sin6_addr, buf, len)) { +return errno; + } + *port = ntohs(sin->sin6_port); +} else { + struct sockaddr_in* sin = (struct sockaddr_in*)(); + if (!inet_ntop(AF_INET, >sin_addr, buf, len)) { +return errno; + } + *port = ntohs(sin->sin_port); } -memcpy(buf, addr, len); return SUCCESS; } - return rc; + return errno; }