Fix: ustcomm: application name uses the '-ust'-suffixed thread name
[lttng-ust.git] / src / common / ustcomm.c
index ada896f68f60ad1b0d077a4786c63b44f45c123d..319e84ac923530d790de9afd22ba595849399e31 100644 (file)
@@ -214,7 +214,7 @@ int ustcomm_listen_unix_sock(int sock)
 /*
  * ustcomm_close_unix_sock
  *
- * Shutdown cleanly a unix socket.
+ * Close unix socket.
  *
  * Handles fd tracker internally.
  */
@@ -235,6 +235,24 @@ int ustcomm_close_unix_sock(int sock)
        return ret;
 }
 
+/*
+ * ustcomm_shutdown_unix_sock
+ *
+ * Shutdown unix socket. Keeps the file descriptor open, but shutdown
+ * communication.
+ */
+int ustcomm_shutdown_unix_sock(int sock)
+{
+       int ret;
+
+       ret = shutdown(sock, SHUT_RDWR);
+       if (ret) {
+               PERROR("Socket shutdown error");
+               ret = -errno;
+       }
+       return ret;
+}
+
 /*
  * ustcomm_recv_unix_sock
  *
@@ -268,17 +286,13 @@ ssize_t ustcomm_recv_unix_sock(int sock, void *buf, size_t len)
        } while ((ret > 0 && ret < len_last) || (ret < 0 && errno == EINTR));
 
        if (ret < 0) {
-               int shutret;
-
                if (errno != EPIPE && errno != ECONNRESET && errno != ECONNREFUSED)
                        PERROR("recvmsg");
                ret = -errno;
                if (ret == -ECONNRESET || ret == -ECONNREFUSED)
                        ret = -EPIPE;
 
-               shutret = shutdown(sock, SHUT_RDWR);
-               if (shutret)
-                       ERR("Socket shutdown error");
+               (void) ustcomm_shutdown_unix_sock(sock);
        } else if (ret > 0) {
                ret = len;
        }
@@ -318,17 +332,13 @@ ssize_t ustcomm_send_unix_sock(int sock, const void *buf, size_t len)
        } while (ret < 0 && errno == EINTR);
 
        if (ret < 0) {
-               int shutret;
-
                if (errno != EPIPE && errno != ECONNRESET)
                        PERROR("sendmsg");
                ret = -errno;
                if (ret == -ECONNRESET)
                        ret = -EPIPE;
 
-               shutret = shutdown(sock, SHUT_RDWR);
-               if (shutret)
-                       ERR("Socket shutdown error");
+               (void) ustcomm_shutdown_unix_sock(sock);
        }
 
        return ret;
@@ -793,7 +803,8 @@ int ustcomm_send_reg_msg(int sock,
                uint32_t uint16_t_alignment,
                uint32_t uint32_t_alignment,
                uint32_t uint64_t_alignment,
-               uint32_t long_alignment)
+               uint32_t long_alignment,
+               const char *procname)
 {
        ssize_t len;
        struct lttng_ust_ctl_reg_msg reg_msg;
@@ -812,7 +823,8 @@ int ustcomm_send_reg_msg(int sock,
        reg_msg.uint64_t_alignment = uint64_t_alignment;
        reg_msg.long_alignment = long_alignment;
        reg_msg.socket_type = type;
-       lttng_pthread_getname_np(reg_msg.name, LTTNG_UST_ABI_PROCNAME_LEN);
+       memset(reg_msg.name, 0, sizeof(reg_msg.name));
+       strncpy(reg_msg.name, procname, sizeof(reg_msg.name) - 1);
        memset(reg_msg.padding, 0, sizeof(reg_msg.padding));
 
        len = ustcomm_send_unix_sock(sock, &reg_msg, sizeof(reg_msg));
This page took 0.02375 seconds and 4 git commands to generate.