From fef59a8216e70a0eef47ce9c2eb9da32a16cd764 Mon Sep 17 00:00:00 2001 From: Daniel-Constantin Mierla Date: Tue, 5 Sep 2023 12:31:32 +0200 Subject: [PATCH] dispatcher: $dsg(key) - count active/inactive targets in the group --- src/modules/dispatcher/dispatcher.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/modules/dispatcher/dispatcher.c b/src/modules/dispatcher/dispatcher.c index 0264a37bc7e..e9676b0aae7 100644 --- a/src/modules/dispatcher/dispatcher.c +++ b/src/modules/dispatcher/dispatcher.c @@ -1395,6 +1395,7 @@ static int pv_get_dsg(sip_msg_t *msg, pv_param_t *param, pv_value_t *res) int count = 0; int active = 0; int inactive = 0; + int j = 0; if(param == NULL) { return -1; @@ -1405,6 +1406,17 @@ static int pv_get_dsg(sip_msg_t *msg, pv_param_t *param, pv_value_t *res) return pv_get_null(msg, param, res); } + lock_get(&dsg->lock); + count = dsg->nr; + for(j = 0; j < dsg->nr; j++) { + if(ds_skip_dst(dsg->dlist[j].flags)) { + inactive++; + } else { + active++; + } + } + lock_release(&dsg->lock); + switch(param->pvn.u.isname.name.n) { case 0: /* count */ return pv_get_sintval(msg, param, res, count);