X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fagent.c;h=1cd70e8c5f21f82ec2563ff7dd2a6c1766e85ed5;hb=00a620843422e5c972aee0ada2181b811fc81b92;hp=dbeec9dabf5a387a1a78fefd25c866cc61ee1b80;hpb=fefd409b002735b415c5f653cdb2587be454f145;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/agent.c b/src/bin/lttng-sessiond/agent.c index dbeec9dab..1cd70e8c5 100644 --- a/src/bin/lttng-sessiond/agent.c +++ b/src/bin/lttng-sessiond/agent.c @@ -16,6 +16,7 @@ */ #define _GNU_SOURCE +#define _LGPL_SOURCE #include #include @@ -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; } @@ -903,6 +913,7 @@ void agent_destroy_event(struct agent_event *event) { assert(event); + free(event->filter); free(event); } @@ -946,7 +957,7 @@ void agent_destroy(struct agent *agt) } rcu_read_unlock(); - lttng_ht_destroy(agt->events); + ht_cleanup_push(agt->events); } /*