Module: kamailio Branch: master Commit: 0dac4a759b841450a757f0ecdbf6d431d62bff87 URL: https://github.com/kamailio/kamailio/commit/0dac4a759b841450a757f0ecdbf6d431...
Author: Federico Cabiddu federico.cabiddu@gmail.com Committer: GitHub noreply@github.com Date: 2020-06-12T07:50:46+02:00
Merge pull request #2353 from kamailio/grumvalski/ds_keep_load
dispatcher: keep current destinations' load when adding/removing
---
Modified: src/modules/dispatcher/dispatch.c
---
Diff: https://github.com/kamailio/kamailio/commit/0dac4a759b841450a757f0ecdbf6d431... Patch: https://github.com/kamailio/kamailio/commit/0dac4a759b841450a757f0ecdbf6d431...
---
diff --git a/src/modules/dispatcher/dispatch.c b/src/modules/dispatcher/dispatch.c index f481cb4d61..66b35742e5 100644 --- a/src/modules/dispatcher/dispatch.c +++ b/src/modules/dispatcher/dispatch.c @@ -353,7 +353,7 @@ int ds_set_attrs(ds_dest_t *dest, str *vattrs) /** * */ -ds_dest_t *pack_dest(str iuri, int flags, int priority, str *attrs) +ds_dest_t *pack_dest(str iuri, int flags, int priority, str *attrs, int dload) { ds_dest_t *dp = NULL; /* For DNS-Lookups */ @@ -419,6 +419,7 @@ ds_dest_t *pack_dest(str iuri, int flags, int priority, str *attrs)
dp->flags = flags; dp->priority = priority; + dp->dload = dload;
if(ds_set_attrs(dp, attrs) < 0) { LM_ERR("cannot set attributes!\n"); @@ -498,14 +499,14 @@ ds_dest_t *pack_dest(str iuri, int flags, int priority, str *attrs) * */ int add_dest2list(int id, str uri, int flags, int priority, str *attrs, - int list_idx, int *setn) + int list_idx, int *setn, int dload) { ds_dest_t *dp = NULL; ds_set_t *sp = NULL; ds_dest_t *dp0 = NULL; ds_dest_t *dp1 = NULL;
- dp = pack_dest(uri, flags, priority, attrs); + dp = pack_dest(uri, flags, priority, attrs, dload); if(!dp) goto err;
@@ -854,7 +855,7 @@ int ds_load_list(char *lfile) attrs.len = p - attrs.s;
add_destination: - if(add_dest2list(id, uri, flags, priority, &attrs, *next_idx, &setn) + if(add_dest2list(id, uri, flags, priority, &attrs, *next_idx, &setn, 0) != 0) { LM_WARN("unable to add destination %.*s to set %d -- skipping\n", uri.len, uri.s, id); @@ -1104,7 +1105,7 @@ int ds_load_db(void) } } LM_DBG("attributes string: [%.*s]\n", attrs.len, (attrs.s)?attrs.s:""); - if(add_dest2list(id, uri, flags, priority, &attrs, *next_idx, &setn) + if(add_dest2list(id, uri, flags, priority, &attrs, *next_idx, &setn, 0) != 0) { dest_errs++; LM_WARN("unable to add destination %.*s to set %d -- skipping\n", @@ -2420,7 +2421,7 @@ void ds_add_dest_cb(ds_set_t *node, int i, void *arg)
if(add_dest2list(node->id, node->dlist[i].uri, node->dlist[i].flags, node->dlist[i].priority, &node->dlist[i].attrs.body, *next_idx, - &setn) != 0) { + &setn, node->dlist[i].dload) != 0) { LM_WARN("failed to add destination in group %d - %.*s\n", node->id, node->dlist[i].uri.len, node->dlist[i].uri.s); } @@ -2443,7 +2444,7 @@ int ds_add_dst(int group, str *address, int flags, str *attrs)
// add new destination if(add_dest2list(group, *address, flags, priority, attrs, - *next_idx, &setn) != 0) { + *next_idx, &setn, 0) != 0) { LM_WARN("unable to add destination %.*s to set %d", address->len, address->s, group); if(ds_load_mode==1) { goto error; @@ -2478,7 +2479,7 @@ void ds_filter_dest_cb(ds_set_t *node, int i, void *arg)
if(add_dest2list(node->id, node->dlist[i].uri, node->dlist[i].flags, node->dlist[i].priority, &node->dlist[i].attrs.body, *next_idx, - filter_arg->setn) != 0) { + filter_arg->setn, node->dlist[i].dload) != 0) { LM_WARN("failed to add destination in group %d - %.*s\n", node->id, node->dlist[i].uri.len, node->dlist[i].uri.s); } @@ -2494,7 +2495,7 @@ int ds_remove_dst(int group, str *address)
setn = 0;
- dp = pack_dest(*address, 0, 0, NULL); + dp = pack_dest(*address, 0, 0, NULL, 0); filter_arg.setid = group; filter_arg.dest = dp; filter_arg.setn = &setn;