- ret = do_create_channel(app, usess, ua_sess, ua_chan);
- if (ret < 0) {
- /*
- * Stop everything. On error, the application failed, no more file
- * descriptor are available or ENOMEM so stopping here is the only
- * thing we can do for now.
- */
- goto error_unlock;
+ /*
+ * For a metadata channel, handle it differently.
+ */
+ if (!strncmp(ua_chan->name, DEFAULT_METADATA_NAME,
+ sizeof(ua_chan->name))) {
+ ret = create_ust_app_metadata(ua_sess, app, usess->consumer,
+ &ua_chan->attr);
+ if (ret < 0) {
+ goto error_unlock;
+ }
+ /* Remove it from the hash table and continue!. */
+ ret = lttng_ht_del(ua_sess->channels, &iter);
+ assert(!ret);
+ delete_ust_app_channel(-1, ua_chan, app);
+ continue;
+ } else {
+ ret = do_create_channel(app, usess, ua_sess, ua_chan);
+ if (ret < 0) {
+ /*
+ * Stop everything. On error, the application failed, no more
+ * file descriptor are available or ENOMEM so stopping here is
+ * the only thing we can do for now.
+ */
+ goto error_unlock;
+ }