Module: sip-router Branch: master Commit: 55615d11ece77074ad779d1ad09361b1fd2b2bad URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=55615d11...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: Fri Nov 18 09:22:26 2011 +0100
diversion: user anchor_lump2 to insert diversion header
- remove the caching of anchor, is not save across many processes, when handling diversion in request_route and failure_route
---
modules_k/diversion/diversion.c | 17 +++++------------ 1 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/modules_k/diversion/diversion.c b/modules_k/diversion/diversion.c index f9f2436..06f3c43 100644 --- a/modules_k/diversion/diversion.c +++ b/modules_k/diversion/diversion.c @@ -104,15 +104,10 @@ static int mod_init(void) static inline int add_diversion_helper(struct sip_msg* msg, str* s) { char *ptr; + int is_ref;
- static struct lump* anchor = 0; - static unsigned int msg_id = 0; + struct lump* anchor = 0;
- if (msg_id != msg->id) { - msg_id = msg->id; - anchor = 0; - } - if (!msg->diversion && parse_headers(msg, HDR_DIVERSION_F, 0) == -1) { LM_ERR("header parsing failed\n"); return -1; @@ -126,12 +121,10 @@ static inline int add_diversion_helper(struct sip_msg* msg, str* s) ptr = msg->unparsed; }
+ anchor = anchor_lump2(msg, ptr - msg->buf, 0, 0, &is_ref); if (!anchor) { - anchor = anchor_lump(msg, ptr - msg->buf, 0, 0); - if (!anchor) { - LM_ERR("can't get anchor\n"); - return -2; - } + LM_ERR("can't get anchor\n"); + return -2; } if (!insert_new_lump_before(anchor, s->s, s->len, 0)) {