Fix: notification thread not notified of channel creation on app error
[lttng-tools.git] / src / bin / lttng-sessiond / ust-app.c
index 98f45e05561ea53fbeaf7918ac85aa9cbd402f8e..54479e23c03416b2a6d44b6bf7c780b949141d01 100644 (file)
@@ -92,6 +92,7 @@ static void copy_channel_attr_to_ustctl(
        attr->switch_timer_interval = uattr->switch_timer_interval;
        attr->read_timer_interval = uattr->read_timer_interval;
        attr->output = uattr->output;
+       attr->blocking_timeout = uattr->u.s.blocking_timeout;
 }
 
 /*
@@ -1040,6 +1041,7 @@ struct ust_app_channel *alloc_ust_app_channel(char *name,
                ua_chan->attr.switch_timer_interval = attr->switch_timer_interval;
                ua_chan->attr.read_timer_interval = attr->read_timer_interval;
                ua_chan->attr.output = attr->output;
+               ua_chan->attr.blocking_timeout = attr->u.s.blocking_timeout;
        }
        /* By default, the channel is a per cpu channel. */
        ua_chan->attr.type = LTTNG_UST_CHAN_PER_CPU;
@@ -1803,6 +1805,8 @@ static void shadow_copy_channel(struct ust_app_channel *ua_chan,
        ua_chan->attr.read_timer_interval = uchan->attr.read_timer_interval;
        ua_chan->monitor_timer_interval = uchan->monitor_timer_interval;
        ua_chan->attr.output = uchan->attr.output;
+       ua_chan->attr.blocking_timeout = uchan->attr.u.s.blocking_timeout;
+
        /*
         * Note that the attribute channel type is not set since the channel on the
         * tracing registry side does not have this information.
@@ -2361,7 +2365,7 @@ int create_ust_app_channel_context(struct ust_app_session *ua_sess,
        ua_ctx = alloc_ust_app_ctx(uctx);
        if (ua_ctx == NULL) {
                /* malloc failed */
-               ret = -1;
+               ret = -ENOMEM;
                goto error;
        }
 
@@ -2913,15 +2917,6 @@ static int create_channel_per_uid(struct ust_app *app,
                created = true;
        }
 
-       /* Send buffers to the application. */
-       ret = send_channel_uid_to_ust(reg_chan, app, ua_sess, ua_chan);
-       if (ret < 0) {
-               if (ret != -ENOTCONN) {
-                       ERR("Error sending channel to application");
-               }
-               goto error;
-       }
-
        if (created) {
                enum lttng_error_code cmd_ret;
                struct ltt_session *session;
@@ -2957,6 +2952,15 @@ static int create_channel_per_uid(struct ust_app *app,
                }
        }
 
+       /* Send buffers to the application. */
+       ret = send_channel_uid_to_ust(reg_chan, app, ua_sess, ua_chan);
+       if (ret < 0) {
+               if (ret != -ENOTCONN) {
+                       ERR("Error sending channel to application");
+               }
+               goto error;
+       }
+
 error:
        return ret;
 }
This page took 0.024925 seconds and 4 git commands to generate.