[Serusers] SER & b2bua

Derek Toner Derek at 4ecalls.com
Tue Jul 6 18:39:31 CEST 2004


Hi all,
 
I have been experimenting with Ser and b2bua, and a Grandstream  Budge Tone
100 SIP phone, although the same problem occurs for Cisco ATAs & softphones.
 
When I try to make a call, the call will succeed, but there are a number of
issues at the moment

*	it takes a long amount of time to connect, usually over 10 seconds.
In some cases, it will connect even when the caller has disconnected
*	with b2bua in between the Ser and the SIP gateway, the return code
is 484 - Address Incomplete
*	without b2bua, the return code is 408 - Request Timeout
*	the Ser gets into a loop when receiving an ACK.

I have a feeling that these are all related, and could be down to the
ser.cfg file.
 
Below is the ser.cfg file.
 
Any and all help would be appreciated.
 
Regards,
Derek
 
 
# -------------------------  request routing logic -------------------
 
# main routing logic
 
route{

# Standard max_forward_header checks...
 
# A REGISTER is when a client attempts to register with a SIP Server
        if(method=="REGISTER")
        {
                if (!performRegistration("4ecalls.com")) {
                        sl_send_reply("404", "Not Found");
                        break;
                };
 
                save("location");
 
                sl_send_reply("200", "OK");
        };
 
# It is an attmept to make a call
        if(method=="INVITE")
        {
                sl_send_reply("100", "Trying..");
                log("Attempting to re-route call ...\n");

                # native SIP destinations are handled using our USRLOC DB
                if (!lookup("location"))
                {

# If we get to here, we intend to re-route throgh a PSTN network
                        log("Lookup failed ...\n");
                        sl_send_reply("100", "Trying..");
                        if (performInvite("4ecalls.com"))
                        {
                                log("Am checking to see if it is in our
domain...\n");

                                if(uri=~"^sip:0[0-9]*")
                                {
                                        log("Am really attempting to
re-route call \n");
 
                                        rewritehostport("<SIP GATEWAY
IP>:5060");
                                        forward(<SIP GATEWAY IP>, 5060);
 
# This should forward to the B2BUA server
#                                        rewritehostport("<b2bua IP>:5065");
#                                       forward(<b2bua IP>, 5065);
#                                       log("Am done with that call ...\n");
# We may want to send a reply back here to prevent the client from
# sending too many INVITE requests
                                        sl_send_reply("181", "Forwarding
call");
                                };
                        }
                        else
                        {
                                log("The call was not logged ...\n");
                        };
                        log("The call was redirected - hopefully ...\n");
                }

# Set the accounting flag - XXX do we actually need this?
#               setflag(1);
        };
 
# An ACK is when a call is acknowlowdged to have occured
        if(method=="ACK")
        {
                setStartTimeActiveCall("");
                sl_send_reply("200", "OK");
        };
 
# A CANCEL is when a call is cancelled in the middle of an attempt
        if(method=="CANCEL")
        {
# Remove the active details...
                removeActiveCall("");
        };
 
# A BYE is for when a call finishes, so what we would want to do here is to
track these
# messages, as these contain the info for the billing
        if(method=="BYE")
        {
                log("Found BYE message ...\n");
# This call here should slow down the dispatching of messages
                t_reply("100", "Trying to bill...");
# This will process the message and do all necessary work on it...
# In this case, we just want to perform the BYE actions...
                log("Checking to see if the destination is a SIP phone or
not ...\n");
 
# This lookup is here so we can determine if the call was to a SIP softphone
or ATA
# If it was a SIP Softphone or an ATA, then we won't need to bil, as this is
over IP
                if (!lookup("location"))
                {
                        log("Destination is a PSTN number ...\n");
# This call will bill both the provider and customer
                        performBillingOperation("4ecalls.com");
                }
        };
 
        # we record-route all messages -- to make sure that
        # subsequent messages will go through our proxy; that's
        # particularly good if upstream and downstream entities
        # use different transport protocol
        if(method=="INVITE")
        {
                record_route();
        };
 
        # loose-route processing
        if (loose_route()) {
                t_relay();
                break;
        };
 
        # forward to current uri now; use stateful forwarding; that
        # works reliably even if we forward from TCP to UDP
        if (!t_relay()) {
                sl_reply_error();
        };
}

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20040706/28f59e54/attachment.htm>


More information about the sr-users mailing list