API change for lttng_list_domains prototype
[lttng-tools.git] / lttng-sessiond / ust-consumer.c
index df569368ae04f2e8faafb1b9ebbfde069fc618aa..8a2ba728d76dc0b8a6e34c66a90819bc6a12e7f4 100644 (file)
@@ -46,8 +46,11 @@ static int send_channel_streams(int sock,
        lum.cmd_type = LTTNG_CONSUMER_ADD_CHANNEL;
 
        /*
-        * We need to keep shm_fd open to make sure this key stays unique within
-        * the session daemon.
+        * We need to keep shm_fd open while we transfer the stream file
+        * descriptors to make sure this key stays unique within the
+        * session daemon. We can free the channel shm_fd without
+        * problem after we finished sending stream fds for that
+        * channel.
         */
        lum.u.channel.channel_key = uchan->obj->shm_fd;
        lum.u.channel.max_sb_size = uchan->attr.subbuf_size;
@@ -97,18 +100,7 @@ static int send_channel_streams(int sock,
                        perror("send consumer stream ancillary data");
                        goto error;
                }
-
-               /*
-                * We release the stream object here, as we have passed
-                * it to the consumer.
-                */
-               /* Ensure we don't let the app know (sock = -1). */
-               ustctl_release_object(-1, stream->obj);
-               cds_list_del(&stream->list);
-               free(stream);
        }
-       /* Ensure we don't let the app know (sock = -1). */
-       ustctl_release_object(-1, uchan->obj);
 
        DBG("consumer channel streams sent");
 
@@ -132,6 +124,11 @@ int ust_consumer_send_session(int consumer_fd, struct ust_app_session *usess)
 
        DBG("Sending metadata stream fd");
 
+       if (consumer_fd < 0) {
+               ERR("Consumer has negative file descriptor");
+               return -EINVAL;
+       }
+
        if (usess->metadata->obj->shm_fd != 0) {
                int fd;
                int fds[2];
@@ -176,10 +173,6 @@ int ust_consumer_send_session(int consumer_fd, struct ust_app_session *usess)
                        perror("send consumer stream");
                        goto error;
                }
-               /* Metadata fds passed to consumer, release them. */
-               /* Ensure we don't let the app know (sock = -1). */
-               ustctl_release_object(-1, usess->metadata->stream_obj);
-               ustctl_release_object(-1, usess->metadata->obj);
        }
 
        /* Send each channel fd streams of session */
This page took 0.024174 seconds and 4 git commands to generate.