[04/24] thrift git commit: THRIFT-3947 use sockaddr_storage with getsockname for future transport compatibility (ipv6) Client: Lua

2016-12-21 Thread jfarrell
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, III 
Authored: 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

2016-11-12 Thread jking
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, III 
Authored: 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;
 }