Fix: define _LGPL_SOURCE in C files
[lttng-tools.git] / src / bin / lttng-sessiond / agent.c
index dbeec9dabf5a387a1a78fefd25c866cc61ee1b80..eb3ab1a44df9ce89a4541bb69001427cda84e92a 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #define _GNU_SOURCE
+#define _LGPL_SOURCE
 #include <assert.h>
 #include <urcu/uatomic.h>
 
@@ -528,7 +529,8 @@ error:
  *
  * Return the number of events or else a negative value.
  */
-int agent_list_events(struct lttng_event **events)
+int agent_list_events(struct lttng_event **events,
+               enum lttng_domain_type domain)
 {
        int ret;
        size_t nbmem, count = 0;
@@ -538,6 +540,8 @@ int agent_list_events(struct lttng_event **events)
 
        assert(events);
 
+       DBG2("Agent listing events for domain %d", domain);
+
        nbmem = UST_APP_EVENT_LIST_SIZE;
        tmp_events = zmalloc(nbmem * sizeof(*tmp_events));
        if (!tmp_events) {
@@ -552,6 +556,11 @@ int agent_list_events(struct lttng_event **events)
                ssize_t nb_ev;
                struct lttng_event *agent_events;
 
+               /* Skip domain not asked by the list. */
+               if (app->domain != domain) {
+                       continue;
+               }
+
                nb_ev = list_events(app, &agent_events);
                if (nb_ev < 0) {
                        ret = nb_ev;
@@ -763,6 +772,7 @@ struct agent *agent_create(enum lttng_domain_type domain)
        ret = agent_init(agt);
        if (ret < 0) {
                free(agt);
+               agt = NULL;
                goto error;
        }
 
@@ -946,7 +956,7 @@ void agent_destroy(struct agent *agt)
        }
        rcu_read_unlock();
 
-       lttng_ht_destroy(agt->events);
+       ht_cleanup_push(agt->events);
 }
 
 /*
This page took 0.024456 seconds and 5 git commands to generate.