You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2017/06/09 01:25:32 UTC

[09/50] [abbrv] qpid-proton git commit: PROTON-1476: fix strict-aliasing errors on gcc 4.4.7

PROTON-1476: fix strict-aliasing errors on gcc 4.4.7


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/beb38d21
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/beb38d21
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/beb38d21

Branch: refs/heads/go1
Commit: beb38d21f430d421493188f70921c568668f51d1
Parents: 24a2ed3
Author: Alan Conway <ac...@redhat.com>
Authored: Thu May 11 09:05:49 2017 -0400
Committer: Alan Conway <ac...@redhat.com>
Committed: Thu May 11 11:43:42 2017 -0400

----------------------------------------------------------------------
 proton-c/src/tests/test_tools.h | 57 ++++++++++++++----------------------
 1 file changed, 22 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/beb38d21/proton-c/src/tests/test_tools.h
----------------------------------------------------------------------
diff --git a/proton-c/src/tests/test_tools.h b/proton-c/src/tests/test_tools.h
index ec656f6..04ae0f1 100644
--- a/proton-c/src/tests/test_tools.h
+++ b/proton-c/src/tests/test_tools.h
@@ -23,6 +23,7 @@
 #include <proton/type_compat.h>
 #include <proton/condition.h>
 #include <proton/event.h>
+#include <proton/proactor.h>
 
 #include <errno.h>
 #include <stdarg.h>
@@ -253,43 +254,13 @@ void sock_close(sock_t sock) { close(sock); }
 #endif
 
 
-/* Create a socket and bind(LOOPBACK:0) to get a free port.
-   Use SO_REUSEADDR so other processes can bind and listen on this port.
-   Close the returned fd when the other process is listening.
-   Asserts on error.
-*/
-sock_t sock_bind0(void) {
-  int sock =  socket(AF_INET, SOCK_STREAM, 0);
-  TEST_ASSERT_ERRNO(sock >= 0, errno);
-  int on = 1;
-  TEST_ASSERT_ERRNO(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(on)) == 0, errno);
-  struct sockaddr_in addr = {0};
-  addr.sin_family = AF_INET;    /* set the type of connection to TCP/IP */
-  addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-  addr.sin_port = 0;            /* bind to port 0 */
-  TEST_ASSERT_ERRNO(bind(sock, (struct sockaddr*)&addr, sizeof(addr)) == 0, errno);
-  return sock;
-}
-
-int sock_port(sock_t sock) {
-  struct sockaddr addr = {0};
-  socklen_t len = sizeof(addr);
-  TEST_ASSERT_ERRNO(getsockname(sock, &addr, &len) == 0, errno);
-  int port = -1;
-  switch (addr.sa_family) {
-   case AF_INET: port = ((struct sockaddr_in*)&addr)->sin_port; break;
-   case AF_INET6: port = ((struct sockaddr_in6*)&addr)->sin6_port; break;
-   default: TEST_ASSERTF(false, "unknown protocol type %d\n", addr.sa_family); break;
-  }
-  return ntohs(port);
-}
 
 /* Combines a sock_t with the int and char* versions of the port for convenience */
 typedef struct test_port_t {
   sock_t sock;
   int port;                     /* port as integer */
-  char str[256];                /* port as string */
-  char host_port[256];          /* host:port string */
+  char str[PN_MAX_ADDR];	/* port as string */
+  char host_port[PN_MAX_ADDR];	/* host:port string */
 } test_port_t;
 
 /* Modifies tp->host_port to use host, returns the new tp->host_port */
@@ -298,11 +269,27 @@ const char *test_port_use_host(test_port_t *tp, const char *host) {
   return tp->host_port;
 }
 
-/* Create a test_port_t  */
+/* Create a socket and bind(INADDR_LOOPBACK:0) to get a free port.
+   Use SO_REUSEADDR so other processes can bind and listen on this port.
+   Use host to create the host_port address string.
+*/
 test_port_t test_port(const char* host) {
   test_port_t tp = {0};
-  tp.sock = sock_bind0();
-  tp.port = sock_port(tp.sock);
+  tp.sock = socket(AF_INET, SOCK_STREAM, 0);
+  TEST_ASSERT_ERRNO(tp.sock >= 0, errno);
+  int on = 1;
+  int err = setsockopt(tp.sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(on));
+  TEST_ASSERT_ERRNO(!err, errno);
+  struct sockaddr_in addr = {0};
+  addr.sin_family = AF_INET;    /* set the type of connection to TCP/IP */
+  addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+  addr.sin_port = 0;            /* bind to port 0 */
+  err = bind(tp.sock, (struct sockaddr*)&addr, sizeof(addr));
+  TEST_ASSERT_ERRNO(!err, errno);
+  socklen_t len = sizeof(addr);
+  err = getsockname(tp.sock, (struct sockaddr*)&addr, &len); /* Get the bound port */
+  TEST_ASSERT_ERRNO(!err, errno);
+  tp.port = addr.sin_port;
   snprintf(tp.str, sizeof(tp.str), "%d", tp.port);
   test_port_use_host(&tp, host);
   return tp;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org