Fix: return expected error return values for sessiond
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 1 Mar 2013 16:45:45 +0000 (11:45 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 1 Mar 2013 18:06:48 +0000 (13:06 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust-comm/lttng-ust-comm.c

index 5d7a049b11568f620bd661c0a2dc73c8567f74d5..3644a1628a7fc12af488f79764c11422cceb3d39 100644 (file)
@@ -79,7 +79,6 @@ const char *lttng_ust_strerror(int code)
        if (code >= LTTNG_UST_ERR_NR)
                code = LTTNG_UST_ERR;
        return ustcomm_readable_code[USTCOMM_CODE_OFFSET(code)];
-
 }
 
 /*
@@ -121,7 +120,11 @@ int ustcomm_connect_unix_sock(const char *pathname)
                 * is used in normal execution to detect if sessiond is
                 * alive.
                 */
+               if (errno != ECONNREFUSED && errno != ECONNRESET)
+                       PERROR("connect");
                ret = -errno;
+               if (ret == -ECONNREFUSED || ret == -ECONNRESET)
+                       ret = -EPIPE;
                goto error_connect;
        }
 
@@ -275,10 +278,10 @@ ssize_t ustcomm_recv_unix_sock(int sock, void *buf, size_t len)
        if (ret < 0) {
                int shutret;
 
-               if (errno != EPIPE && errno != ECONNRESET)
+               if (errno != EPIPE && errno != ECONNRESET && errno != ECONNREFUSED)
                        PERROR("recvmsg");
                ret = -errno;
-               if (ret == -ECONNRESET)
+               if (ret == -ECONNRESET || ret == -ECONNREFUSED)
                        ret = -EPIPE;
 
                shutret = shutdown(sock, SHUT_RDWR);
@@ -426,8 +429,7 @@ ssize_t ustcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd)
                if (errno != EPIPE && errno != ECONNRESET) {
                        PERROR("recvmsg fds");
                }
-               if (errno == EPIPE || errno == ECONNRESET)
-                       ret = -errno;
+               ret = -errno;
                if (ret == -ECONNRESET)
                        ret = -EPIPE;
                goto end;
@@ -514,15 +516,10 @@ int ustcomm_recv_app_reply(int sock, struct ustcomm_ust_reply *lur,
                }
                return lur->ret_code;
        default:
-               if (len < 0) {
-                       /* Transport level error */
-                       if (errno == EPIPE || errno == ECONNRESET)
-                               len = -errno;
-                       return len;
-               } else {
+               if (len >= 0) {
                        ERR("incorrect message size: %zd\n", len);
-                       return len;
                }
+               return len;
        }
 }
 
This page took 0.025765 seconds and 4 git commands to generate.