[Serusers] Help rewriting "To" URI

Jan Janak jan at iptel.org
Wed Nov 26 21:00:40 CET 2003


If you need to rewrite request URI in a module then you can use the
following function (you will have to include "sip_router/mem/mem.h,
sip_router/dprint.h, sip_router/parser/msg_parser.h and sip_router/str.h).

  Jan.

/* 
 * Rewrite Request-URI
 */
static inline int rewrite(struct sip_msg* _m, str* _s)
{
	char* buf;

	buf = (char*)pkg_malloc(_s->len + 1);
	if (!buf) {
		LOG(L_ERR, "rewrite(): No memory left\n");
		return -1;
	}
	
	memcpy(buf, _s->s, _s->len);
	buf[_s->len] = '\0';
											_m->parsed_uri_ok = 0;
	if (_m->new_uri.s) {
	       pkg_free(_m->new_uri.s);
	}

	_m->new_uri.s = buf;
	_m->new_uri.len = _s->len;
											DBG("rewrite():	Rewriting Request-URI with '%.*s'\n", _s->len, buf);
	return 0;								}
																					  

On 26-11 13:00, José Nunes wrote:
> Hello Bernie,
> 
> Indeed I was taking the wrong way to solve my problem (I should do a more
> thorough reading of the docs :-)).
> I do not intend to go so far as to implementing a B2BUA, in the moment I
> only want redirection, not keeping the dialog state.
> Now I can achieve my goal using the do_action function to change the request
> URI.
> 
> Thanks for your help,
> 
> José Nunes
> ----- Original Message -----
> From: "Bernie Hoeneisen" <bhoeneis at switch.ch>
> To: "José Nunes" <jnunes at av.it.pt>
> Cc: <serusers at lists.iptel.org>
> Sent: Tuesday, November 25, 2003 5:11 PM
> Subject: Re: [Serusers] Help rewriting "To" URI
> 
> 
> Hi Jose!
> 
> Routing decisions are never made based on the To: header field.
> Only the Request-URI and the topmost Route: haeder field are basis for
> routing decisions (see also RFC 3261).
> I guess this is why your implementation doesn't work as planned.
> 
> AFAIK a proxy changing the To: header field is not allowed, except
> adding a tag.
> Furthermore I would expect interoperability problems, if a proxy in the
> middle changes the To: header field. (Certainly such problems occur with
> legacy RFC 2543 UAs.)
> 
> What you are trying to implement looks like a Back-2-Back-User-Agent
> (B2BUA).
> 
>  T: Bernie
> 
> 
> On Tue, 25 Nov 2003, José Nunes wrote:
> 
> > Hello,
> >
> > I've been working whit SER for a while, and I need to have some way of
> > redirecting Invites dynamicly. The idea is similar to the definition of
> > groups (local,ld,...), only I want to be able to define the redirection
> > address without having to rewrite ser.cfg (and therefor reinitialize
> > SER).  The part of defining these new groups and addresses was
> > straightforward, after that I tried to build a module that would have a
> > function to do the writing of the "To" URI. The only function I found to
> > alter the destination URI was append_branch. The module compiles without
> > error and SER works normally, except it does not do the redirections
> > that I was hoping. Are there any other ways of adding/rewriting
> > something to the body of "To" in the SIP message? Or one can only do
> > that in ser.cfg?
> >
> > Thanks in advance,
> >
> > José Nunes
> 
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list