THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
The following task has a new comment added:
FS#278 - usrloc module stops updating some records in db_mode 2
User who did this - Daniel-Constantin Mierla (miconda)
----------
I just pushed some patches to git master branch. Set db_ops_ruid parameter of usrloc module to 1 and give it a try.
It enables doing queries to database for update/delete of records using ruid in WHERE instead of values for aor, contact and call-id.
----------
More information can be found at the following URL:
http://sip-router.org/tracker/index.php?do=details&task_id=278#comment857
You are receiving this message because you have requested it from the Flyspray bugtracking system. If you did not expect this message or don't want to receive mails in future, you can change your notification settings at the URL shown above.
Module: sip-router
Branch: master
Commit: 1e84948d120ef2b1206f90458d47486239cfd81b
URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=1e84948…
Author: Peter Dunkley <peter.dunkley(a)crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley(a)crocodile-rcs.com>
Date: Wed Apr 24 14:24:45 2013 +0100
modules/rr: Double-route and outbound support in loose.c
- Have removed outbound support from strict routing for now as it was incorrect
and I don't have a system to test with.
---
modules/rr/loose.c | 110 +++++++++++++++++++++++-----------------------------
1 files changed, 49 insertions(+), 61 deletions(-)
diff --git a/modules/rr/loose.c b/modules/rr/loose.c
index 50c4774..ad19e81 100644
--- a/modules/rr/loose.c
+++ b/modules/rr/loose.c
@@ -571,7 +571,7 @@ static inline int after_strict(struct sip_msg* _m)
char* rem_off;
str uri;
struct socket_info *si;
- int use_ob, next_is_strict;
+ int next_is_strict;
hdr = _m->route;
rt = (rr_t*)hdr->parsed;
@@ -588,14 +588,11 @@ static inline int after_strict(struct sip_msg* _m)
}
next_is_strict = is_strict(&puri.params);
- if ((use_ob = process_outbound(_m, puri.user, &uri)) < 0) {
- LM_ERR("processing outbound flow-token\n");
- return FLOW_TOKEN_BROKEN;
- }
- if (!use_ob && enable_double_rr && is_2rr(&puri.params) && is_myself(&puri)) {
+ if (enable_double_rr && is_2rr(&puri.params) && is_myself(&puri)) {
/* double route may occure due different IP and port, so force as
* send interface the one advertise in second Route */
+
si = grep_sock_info( &puri.host, puri.port_no, puri.proto);
if (si) {
set_force_socket(_m, si);
@@ -650,11 +647,9 @@ static inline int after_strict(struct sip_msg* _m)
* always be a strict router because endpoints don't use ;lr parameter
* In this case we will simply put the URI in R-URI and forward it,
* which will work perfectly */
- if (!use_ob) {
- if(get_maddr_uri(&uri, &puri)!=0) {
- LM_ERR("failed to check maddr\n");
- return RR_ERROR;
- }
+ if(get_maddr_uri(&uri, &puri)!=0) {
+ LM_ERR("failed to check maddr\n");
+ return RR_ERROR;
}
if (rewrite_uri(_m, &uri) < 0) {
LM_ERR("failed to rewrite request URI\n");
@@ -676,11 +671,9 @@ static inline int after_strict(struct sip_msg* _m)
LM_DBG("Next hop: '%.*s' is loose router\n",
uri.len, ZSW(uri.s));
- if (!use_ob) {
- if(get_maddr_uri(&uri, &puri)!=0) {
- LM_ERR("failed to check maddr\n");
- return RR_ERROR;
- }
+ if(get_maddr_uri(&uri, &puri)!=0) {
+ LM_ERR("failed to check maddr\n");
+ return RR_ERROR;
}
if (set_dst_uri(_m, &uri) < 0) {
LM_ERR("failed to set dst_uri\n");
@@ -745,10 +738,7 @@ static inline int after_strict(struct sip_msg* _m)
if(routed_params.len > 0)
run_rr_callbacks( _m, &routed_params );
- if (use_ob == 1)
- return RR_OB_DRIVEN;
- else
- return RR_DRIVEN;
+ return RR_DRIVEN;
}
@@ -767,7 +757,8 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
int status;
str uri;
struct socket_info *si;
- int uri_is_myself, use_ob, next_is_strict;
+ int uri_is_myself, next_is_strict;
+ int use_ob = 0;
hdr = _m->route;
rt = (rr_t*)hdr->parsed;
@@ -784,12 +775,6 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
next_is_strict = is_strict(&puri.params);
routed_params = puri.params;
uri_is_myself = is_myself(&puri);
- if ((use_ob = process_outbound(_m, puri.user, &uri)) < 0) {
- LM_ERR("processing outbound flow-token\n");
- return FLOW_TOKEN_BROKEN;
- }
-
- LM_DBG("process_outbound returned <%d>\n", use_ob);
/* IF the URI was added by me, remove it */
if (uri_is_myself>0)
@@ -799,6 +784,11 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
/* set the hooks for the params */
routed_msg_id = _m->id;
+ if ((use_ob = process_outbound(_m, puri.user, &uri)) < 0) {
+ LM_ERR("processing outbound flow-token\n");
+ return FLOW_TOKEN_BROKEN;
+ }
+
if (!rt->next) {
/* No next route in the same header, remove the whole header
* field immediately
@@ -808,10 +798,6 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
return RR_ERROR;
}
- /* When using outbound skip past all this stuff and just set
- the destination */
- if (use_ob) goto got_uri;
-
res = find_next_route(_m, &hdr);
if (res < 0) {
LM_ERR("failed to find next route\n");
@@ -825,14 +811,15 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
rt = (rr_t*)hdr->parsed;
} else rt = rt->next;
- if (!use_ob) {
- if (enable_double_rr && is_2rr(&puri.params)) {
- /* double route may occure due different IP and port, so force as
- * send interface the one advertise in second Route */
- if (parse_uri(rt->nameaddr.uri.s,rt->nameaddr.uri.len,&puri)<0) {
- LM_ERR("failed to parse the double route URI\n");
- return RR_ERROR;
- }
+ if (enable_double_rr && is_2rr(&puri.params)) {
+ /* double route may occure due different IP and port, so force as
+ * send interface the one advertise in second Route */
+ if (parse_uri(rt->nameaddr.uri.s,rt->nameaddr.uri.len,&puri)<0) {
+ LM_ERR("failed to parse the double route URI\n");
+ return RR_ERROR;
+ }
+
+ if (!use_ob) {
si = grep_sock_info( &puri.host, puri.port_no, puri.proto);
if (si) {
set_force_socket(_m, si);
@@ -840,28 +827,30 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
if (enable_socket_mismatch_warning)
LM_WARN("no socket found for match second RR\n");
}
-
- if (!rt->next) {
- /* No next route in the same header, remove the whole header
- * field immediately */
- if (!del_lump(_m, hdr->name.s - _m->buf, hdr->len, 0)) {
- LM_ERR("failed to remove Route HF\n");
- return RR_ERROR;
- }
- res = find_next_route(_m, &hdr);
- if (res < 0) {
- LM_ERR("failed to find next route\n");
- return RR_ERROR;
- }
- if (res > 0) { /* No next route found */
- LM_DBG("no next URI found\n");
- status = (preloaded ? NOT_RR_DRIVEN : RR_DRIVEN);
- goto done;
- }
- rt = (rr_t*)hdr->parsed;
- } else rt = rt->next;
}
-
+
+ if (!rt->next) {
+ /* No next route in the same header, remove the whole header
+ * field immediately */
+ if (!del_lump(_m, hdr->name.s - _m->buf, hdr->len, 0)) {
+ LM_ERR("failed to remove Route HF\n");
+ return RR_ERROR;
+ }
+ res = find_next_route(_m, &hdr);
+ if (res < 0) {
+ LM_ERR("failed to find next route\n");
+ return RR_ERROR;
+ }
+ if (res > 0) { /* No next route found */
+ LM_DBG("no next URI found\n");
+ status = (preloaded ? NOT_RR_DRIVEN : RR_DRIVEN);
+ goto done;
+ }
+ rt = (rr_t*)hdr->parsed;
+ } else rt = rt->next;
+ }
+
+ if (!use_ob) {
uri = rt->nameaddr.uri;
if (parse_uri(uri.s, uri.len, &puri) < 0) {
LM_ERR("failed to parse the first route URI\n");
@@ -889,7 +878,6 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
} else {
/* Next hop is loose router */
LM_DBG("Next URI is a loose router\n");
-got_uri:
if (!use_ob) {
if(get_maddr_uri(&uri, &puri)!=0) {