VCL-LDPRELOAD: Fix connect return value handling. 94/9594/3
authorDave Wallace <dwallacelf@gmail.com>
Mon, 27 Nov 2017 22:07:51 +0000 (17:07 -0500)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 29 Nov 2017 19:17:57 +0000 (19:17 +0000)
Change-Id: I51d82f39d450834f0ba4d9415aa3e62eb61fc1e9
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
src/vcl/vcom.c

index 24b8f29..4f8435f 100644 (file)
@@ -101,16 +101,18 @@ static inline int
 vcom_init (void)
 {
   pid_t pid = getpid ();
+  int rv;
 
   if (!is_vcom_init)
     {
-      if (vppcom_app_create (vcom_get_app_name ()) != 0)
+      rv = vppcom_app_create (vcom_get_app_name ());
+      if (rv)
        {
          printf ("\n[%d] vcom_init...failed!\n", pid);
          if (VCOM_DEBUG > 0)
            fprintf (stderr,
                     "[%d] vcom_init: vppcom_app_create failed!\n", pid);
-         return -1;
+         return rv;
        }
       if (vcom_socket_main_init () != 0)
        {
@@ -1921,11 +1923,12 @@ getsockname (int __fd, __SOCKADDR_ARG __addr, socklen_t * __restrict __len)
 int
 vcom_connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
 {
-  int rv = -1;
+  int rv;
 
-  if (vcom_init () != 0)
+  rv = vcom_init ();
+  if (rv)
     {
-      return -1;
+      return rv;
     }
 
   /* validate __len */
@@ -1933,15 +1936,15 @@ vcom_connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
     {
     case AF_INET:
       if (__len != INET_ADDRSTRLEN)
-       return -1;
+       return -EINVAL;
       break;
     case AF_INET6:
       if (__len != INET6_ADDRSTRLEN)
-       return -1;
+       return -EINVAL;
       break;
 
     default:
-      return -1;
+      return -EAFNOSUPPORT;
       break;
     }
 
@@ -1951,16 +1954,10 @@ vcom_connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
     case AF_INET:
     case AF_INET6:
       rv = vcom_socket_connect (__fd, __addr, __len);
-      if (!rv)
-       {
-         errno = -rv;
-         return -1;
-
-       }
       break;
 
     default:
-      return -1;
+      return -EPFNOSUPPORT;
       break;
     }
 
@@ -1972,18 +1969,16 @@ connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
 {
   int rv;
   pid_t pid = getpid ();
-  pthread_t tid = pthread_self ();
 
   if (is_vcom_socket_fd (__fd))
     {
       rv = vcom_connect (__fd, __addr, __len);
       if (VCOM_DEBUG > 0)
        fprintf (stderr,
-                "[%d][%lu (0x%lx)] connect: "
+                "[%d] connect: "
                 "'%04d'='%04d', '%p', '%04d'\n",
-                pid, (unsigned long) tid, (unsigned long) tid,
-                rv, __fd, __addr, __len);
-      if (!rv)
+                pid, rv, __fd, __addr, __len);
+      if (rv)
        {
          errno = -rv;
          return -1;