Can anyone confirm, is this safe? Primary use case is
replication of REGISTER after local save().
diff --git a/modules/dmq/dmq_funcs.c
b/modules/dmq/dmq_funcs.c
index b31deba..a3611e8 100644
--- a/modules/dmq/dmq_funcs.c
+++ b/modules/dmq/dmq_funcs.c
@@ -24,6 +24,7 @@
#include "dmq_funcs.h"
#include "notification_peer.h"
+#include "../../dset.h"
/**
* @brief register a DMQ peer
@@ -385,6 +386,7 @@ int cfg_dmq_t_replicate(struct
sip_msg* msg, char* s)
dmq_node_t* node;
struct socket_info* sock;
int i = 0;
+ int first = 1;
/* avoid loops - do not replicate if message has
come from another node
* (override if optional parameter is set)
@@ -413,10 +415,22 @@ int cfg_dmq_t_replicate(struct
sip_msg* msg, char* s)
node = node->next;
continue;
}
+
+ if (!first) {
+ if (append_branch(msg, 0, 0, 0,
Q_UNSPECIFIED, 0, sock, 0, 0, 0, 0) == -1) {
+ LM_ERR("failed to append
a branch\n");
+ node = node->next;
+ continue;
+ }
+ } else {
+ first = 0;
+ }
+
if(tmb.t_replicate(msg,
&node->orig_uri) < 0) {
LM_ERR("error calling
t_replicate\n");
goto error;
}
+
node = node->next;
}
lock_release(&node_list->lock);
Many thanks,
Charles