Cleanup comments and bad indent
[lttng-tools.git] / ltt-sessiond / main.c
index 470ab18188b162b38a2f98bfef1b94fb07eec0aa..70c194b226cc2c90dff6f5fee045b036178f2cf3 100644 (file)
@@ -753,6 +753,25 @@ static void *thread_manage_kconsumerd(void *data)
                goto error;
        }
 
+       /* Kconsumerd err socket */
+       pollfd[1].fd = sock;
+       pollfd[1].events = POLLIN;
+
+       /* Inifinite blocking call, waiting for transmission */
+       ret = poll(pollfd, 2, -1);
+       if (ret < 0) {
+               perror("poll kconsumerd thread");
+               goto error;
+       }
+
+       /* Thread quit pipe has been closed. Killing thread. */
+       if (pollfd[0].revents == POLLNVAL) {
+               goto error;
+       } else if (pollfd[1].revents == POLLERR) {
+               ERR("Kconsumerd err socket second poll error");
+               goto error;
+       }
+
        /* Wait for any kconsumerd error */
        ret = lttcomm_recv_unix_sock(sock, &code, sizeof(enum lttcomm_return_code));
        if (ret <= 0) {
@@ -840,10 +859,10 @@ static void *thread_manage_apps(void *data)
                }
 
                /*
-                * Basic recv here to handle the very simple data
-                * that the libust send to register (reg_msg).
+                * Using message-based transmissions to ensure we don't
+                * have to deal with partially received messages.
                 */
-               ret = recv(sock, &reg_msg, sizeof(reg_msg), 0);
+               ret = lttcomm_recv_unix_sock(sock, &reg_msg, sizeof(reg_msg));
                if (ret < 0) {
                        perror("recv");
                        continue;
@@ -852,6 +871,11 @@ static void *thread_manage_apps(void *data)
                /* Add application to the global traceable list */
                if (reg_msg.reg == 1) {
                        /* Registering */
+                       /*
+                        * TODO: socket should be either passed to a
+                        * listener thread (for more messages) or
+                        * closed. It currently leaks.
+                        */
                        ret = register_traceable_app(reg_msg.pid, reg_msg.uid);
                        if (ret < 0) {
                                /* register_traceable_app only return an error with
@@ -1961,16 +1985,16 @@ static int process_client_msg(struct command_ctx *cmd_ctx)
                                }
                        }
 
-                       DBG("Start kernel tracing");
-                       ret = kernel_start_session(cmd_ctx->session->kernel_session);
+                       ret = start_kernel_trace(cmd_ctx->session->kernel_session);
                        if (ret < 0) {
-                               ERR("Kernel start session failed");
                                ret = LTTCOMM_KERN_START_FAIL;
                                goto error;
                        }
 
-                       ret = start_kernel_trace(cmd_ctx->session->kernel_session);
+                       DBG("Start kernel tracing");
+                       ret = kernel_start_session(cmd_ctx->session->kernel_session);
                        if (ret < 0) {
+                               ERR("Kernel start session failed");
                                ret = LTTCOMM_KERN_START_FAIL;
                                goto error;
                        }
This page took 0.023706 seconds and 4 git commands to generate.