Thanks for your reply.  According to your reply, I add the following
code for the PRACK.
if (method=="PRACK") {
           if (avp_db_load("$from/uri","s:alias")) {
                 xlog("L_INFO","sip408: have alias - [$avp(s:alias)]\n");
                 uac_replace_from("anonymous","sip:$avp(s:alias)@$si");
           } else {
                 xlog("L_INFO","sip411: no alias\n");
           };
}

The result is the same as before.  It seems there is a conflict in the
from header and it causes the 481 error.  To be more precise, below is
the protocol flow.

                UA1                             server1                 server2
fromtag:taga    -----from username:9000 INVITE----->                            
fromtag:taga    <----from username:9000 100 trying---
                        after uac_replace_from("1234","sip:[EMAIL PROTECTED]")
fromtag:taga                                    ------from username:1234 INVITE 
---->
(callee rings but caller drops)
fromtag:taga                                    <-----from username:1234 100 
trying----
(callee still rings until answers the call)
fromtag:taga                                    <----from username:1234 session 
progress 183---
fromtag:taga    <-----from username:9000 session prgress 183----
fromtag:taga    -----from username:9000 PRACK----------->
fromtag:taga                                    ----------from username:9000 
PRACK--->
fromtag:taga                                    <----from username:9000 481 
call leg -----
fromtag:taga    <----from username:9000 481 call leg -----


On 1/5/06, Daniel-Constantin Mierla <[EMAIL PROTECTED]> wrote:
> Hello,
>
> "SIP/2.0 481 Call Leg/Transaction Does Not Exist" is for PRACK, because you 
> do not change the From header for it. You have to do the same translation for 
> all requests within the dialog. See the documentation of uac module: .
>
> http://openser.org/docs/modules/1.1.x/uac.html
>
> Cheers,
> Daniel
>
>
> On 01/04/06 12:21, unplug wrote:
> > Actually, I am replacing the username of the uri with the alias that
> > stored in the database.  In my configuration file, it is using
> > mediaproxy for NAT function (features-callfwd.5.0.cfg from getting
> > started). I also add the following codes in the very first of the
> > route routine for alias replacing purpose.
> >
> > route {
> > ...
> >         if (!has_totag() && method=="INVITE") {
> >           if (avp_db_load("$from/uri","s:alias")) {
> >                 xlog("L_INFO","sip408: have alias - [$avp(s:alias)]\n");
> >                 uac_replace_from("anonymous","sip:$avp(s:alias)@$si");
> >           } else {
> >                 xlog("L_INFO","sip411: no alias\n");
> >           };
> >         };
> > ...
> > }
> >
> > When I make a call from a phone to the PSTN phone, the caller drops
> > the ring when the callee rings.  Callee hangs up and callee rings
> > again few seconds after.  You can find an error message "SIP/2.0 481
> > Call Leg/Transaction Does Not Exist" in line 180.  I wonder if there
> > is any thing wrong with the above code or my concept is wrong.  Please
> > help.  Below is the sip message.
> > [...]
> >
>

_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users

Reply via email to