I am forwarding this config again, it was rejected
by the filter yesterday.
---greg
Here is the config.
I don't recall processing ACKs in call flows.
I thought they were part of the call state in t_relay().
I see that this ACK has a Route: message. Is this where I
get the information about where to send the packet?
---greg
----config-------------
#
______________________________________________________________
__________
#
#
# $RCSfile: register.cfg $
# $Revision: 1.1 $
#
# Last change $Date: 2003-01-18 23:03:50-06 $
# Last change $Author: lgfausak $
# $State: Exp $
# $Locker: $
#
# Original author: Greg Fausak
#
# Copyright (C) 2003 -
August.Net Services, LLC
#
#
______________________________________________________________
__________
#
debug=3 # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no # (cmd line: -E)
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
listen=2.3.4.203
port=5060
children=4
fifo="/tmp/ser_fifo"
alias="augustvoice.net"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/postgres.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
loadmodule "/usr/local/lib/ser/modules/exec.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
modparam("usrloc","db_mode",1)
modparam("usrloc","db_url",
"sql://UESRID:PASSSS@MACHINE.august.net:PORT/DBNAME")
modparam("tm","retr_timer1p1", 2) # increase retry timeout
modparam("tm","retr_timer1p2", 3) # increase retry timeout
modparam("tm","retr_timer1p3", 9) # increase retry timeout
modparam("acc", "log_level", 1)
modparam("acc", "acc_flag", 1 )
modparam("acc", "report_ack", 0 )
modparam("auth","db_url",
"sql://UESRID:PASSSS@MACHINE.august.net:PORT/DBNAME")
#
# this is the main routing block for
augustvoice.net
# this block can handle any routing request, local or foreign
#
route
{
#
# check to see if the message has been around too long
# probably means that it is looping
#
if (!mf_process_maxfwd_header("10"))
{
log("LOG: Too many hops\n");
sl_send_reply("483","Too Many Hops");
break;
};
#
# make sure the length of the message isn't too long!
#
if (len_gt( max_len ))
{
sl_send_reply("513", "Wow -- Message too large");
break;
};
#
# forward to correct proxy/domain
#
if(!(uri==myself))
{
# append_hf("P-hint: FORWARD\r\n");
if(!t_relay())
{
sl_reply_error();
};
break;
};
#
# make sure the client is authorized, ignore PRACK
#
if(!(src_ip==2.3.4.196 | src_ip==1.2.3.16) &
!(method=="PRACK")
& !(method=="BYE"))
{
if(!www_authorize("augustvoice.net", "subscriber"))
{
www_challenge("augustvoice.net", "0");
break;
};
};
#
# the REGISTER method
#
if (method=="REGISTER")
{
route(1);
break;
};
#
# rewrite the From route
#
rewriteFromRoute();
#
# see if it is a mike h pstn to ivr call (IVR)
#
if (uri=~"sip:4695466408@.*")
{
route(6);
break;
};
#
# if the destination is REGISTERed locally, route to it
#
if (lookup("location"))
{
log(1,"found location");
route(2);
break;
};
#
# if it is an INVITE from the gateway, reply with error as it
was
# an inbound call to a phone number that doesn't exist (by
virtue
# of the previous lookup("location") failed
#
if(src_ip==2.3.4.196 & method=="INVITE")
{
log(1,"inbound call number doesn't exist here!");
sl_send_reply("480", "inbound called number doesn't
exist");
break;
};
#
# see if it is a mike h. sip to ivr call (IVR)
#
if (uri=~"sip:4[0-9]{3}@.*")
{
# sl_send_reply("480", "Temporary no IVR calls");
route(5);
break;
};
#
# now check if it's about LD PSTN destinations through our
gateway;
#
if (uri=~"sip:1[2-9][0-9]{9}@.*")
{
route(3);
# route(4);
# sl_send_reply("480", "Temporary no LD calls");
break;
};
#
# a local number to the PSTN here in the DFW area
#
if (uri=~"sip:(972|817|469|214|940)[2-9][0-9]{6}@.*")
{
route(3);
break;
};
#
# I don't know why we get down here (yet)
#
if(method=="INVITE" | method=="BYE" |
method=="PRACK" |
method=="OPTIONS")
{
log(1,"TRACE: addRecordRoute()");
setflag(1);
setflag(2);
addRecordRoute();
};
append_hf("P-hint: ATEND\r\n");
if(!t_relay())
{
sl_reply_error();
break;
};
}
#
# route[1], REGISTER block
# REGISTER messages destined for our realm are forwarded here.
# after a successful registration a customer can receive calls.
#
route[1]
{
if(!check_to())
{
log("LOG: To Cheating attempt\n");
sl_send_reply("403","That is ugly -- use To=id next
time");
break;
};
log("here is a register");
if(!save("location"))
{
sl_reply_error();
};
break;
}
# routing to a 'registered' user
route[2]
{
if(method=="INVITE" | method=="BYE" |
method=="PRACK")
{
log(1,"TRACE: addRecordRoute()");
setflag(1);
setflag(2);
addRecordRoute();
};
# append_hf("P-hint: USRLOC\r\n");
if(!t_relay())
{
sl_reply_error();
break;
};
}
# route[3], logic for calls to the PSTN
route[3]
{
log(1,"TRACE:In route[3]");
# let's check from=id ... avoids accounting confusion
if (method=="INVITE" & !check_from())
{
log("LOG: From Cheating attempt\n");
sl_send_reply("403",
"That is ugly -- use From=id next time (gw)");
break;
};
# consume credentials
consume_credentials();
# we passed all authorization checks for PSTN -- move on!
# add a 9 for the gateway
prefix("9");
# requests to gateway must be record-routed because the GW
accepts
# only reqeusts coming from our proxy
if (method=="INVITE" || method=="BYE" |
method=="PRACK")
{
# tag this transaction for accounting
setflag(1);
setflag(2);
addRecordRoute();
};
# if you have passed through all the checks, let your
call go to
GW!
rewritehostport("2.3.4.196:5060");
append_hf("P-hint: LOCAL GATEWAY\r\n");
if (!t_relay()) {
sl_reply_error();
break;
};
}
# route[4], logic for calls to the PSTN (LD)
route[4]
{
log(1,"TRACE:In route[4]");
# let's check from=id ... avoids accounting confusion
if (method=="INVITE" & !check_from())
{
log("LOG: From Cheating attempt\n");
sl_send_reply("403",
"That is ugly -- use From=id next time (gw)");
break;
};
# consume credentials
consume_credentials();
# we passed all authorization checks for PSTN -- move on!
# add a 9 for the gateway
prefix("9");
# requests to gateway must be record-routed because the GW
accepts
# only reqeusts coming from our proxy
if (method=="INVITE" || method=="BYE" |
method=="PRACK")
{
# tag this transaction for accounting
setflag(1);
setflag(2);
addRecordRoute();
};
# if you have passed through all the checks, let your
call go to
GW!
rewritehostport("1.2.3.16:5060");
append_hf("P-hint: LD GATEWAY\r\n");
if (!t_relay()) {
sl_reply_error();
break;
};
}
# route[5], logic for SIP calls to the IVR
route[5]
{
log(1,"TRACE:In route[5]");
# let's check from=id ... avoids accounting confusion
if (method=="INVITE" & !check_from())
{
log("LOG: From Cheating attempt\n");
sl_send_reply("403",
"That is ugly -- use From=id next time (gw)");
break;
};
# consume credentials
consume_credentials();
# we passed all authorization checks for PSTN -- move on!
# requests to gateway must be record-routed because the GW
accepts
# only reqeusts coming from our proxy
if (method=="INVITE" || method=="BYE" |
method=="PRACK")
{
addRecordRoute();
};
# if you have passed through all the checks, let your
call go to
GW!
rewritehostport("1.2.3.15:5060");
append_hf("P-hint: IVR GATEWAY\r\n");
if (!t_relay()) {
sl_reply_error();
break;
};
}
# route[6], logic for PSTN calls to the IVR
route[6]
{
log(1,"TRACE:In route[6]");
# requests to gateway must be record-routed because the GW
accepts
# only reqeusts coming from our proxy
if (method=="INVITE" || method=="BYE")
{
addRecordRoute();
};
# if you have passed through all the checks, let your
call go to
GW!
rewritehostport("1.2.3.15:5060");
append_hf("P-hint: IVR GATEWAY\r\n");
if (!t_relay()) {
sl_reply_error();
break;
};
}
-----------------------
>
>
> I don't think that snom is guilty this time -- 200 ACK
> is forwarded to SER and consumed there, an issue unrelated
> to PRACK. I guess that's a problem in SER configuration --
> send us your config file please.
>
> -Jiri
>
> ps -- our spam filter started doing a too thorough job and
> requests admin approval for almost anything. bear with it
> until it is fixed.
>
> At 02:30 AM 4/23/2003, Greg Fausak wrote:
> >Hi guys,
> >
> >I am trying to get the SNOM 200 to work with iptel
> >again, I seem to be having issues with the PRACK again?
> >In the trace below my gateway is sending an OK after
> >On trace F16 an ACK comes back from the SNOM, lands on
> >the SER and dies. Did the previous PRACK eat the STATE?
> >
> >This can be viewed until midnight (GMT-5) at my server at:
> >http://stage.august.net/snom_index.html
> >
> >Or the text below is the actual trace.
> >
> >:-)
> >
> >---greg
> >[root@rave sipscene]# cat snom.txt
> >Standard Call
> >
> >File: /tmp/snom.dump
> >Generated: Tue Apr 22 19:13:32 2003
> >Traced on: Tue Apr 22 19:09:25 2003
> >Created by:./sip_scenario.pl version=1.1.2
> >
> >SNOM-200 Iptel-PROXY CISCO-12.2.15T
> >66.228.44.203 216.87.144.203 216.87.144.196
> >| | |
> ><Call><PFrame><DeltaTime><Date><Time>
> >| | |
> >|>F1 INVITE (sdp)------>| | 1 PF:1 0.0000
> >22/Apr/03 19:09:25.9917
> >| | |
> >|<- Unauthorized 401 F2<| | 1 PF:2 0.0003
> >22/Apr/03 19:09:25.9920
> >| | |
> >|>F3 ACK -------------->| | 1 PF:3 0.1087
> >22/Apr/03 19:09:26.1008
> >| | |
> >|>F4 INVITE (sdp)------>| | 1 PF:4 0.0640
> >22/Apr/03 19:09:26.1647
> >| | |
> >| trying -- your call is important to us 100 F5 |
> >|<mportant to us 100 F5<| | 1 PF:5 0.0056
> >22/Apr/03 19:09:26.1704
> >| | |
> >| |>F6 INVITE (sdp)------>| 1 PF:6 0.0001
> >22/Apr/03 19:09:26.1705
> >| | |
> >| |<------- Trying 100 F7<| 1 PF:7 0.0042
> >22/Apr/03 19:09:26.1747
> >| | |
> >| | |
> >| | |
> >| | |
> >| | |
> >| | |
> >| (sdp) Session Progress 183 F8 |
> >| |<ssion Progress 183 F8<| 1 PF:8 2.3787
> >22/Apr/03 19:09:28.5534
> >| | |
> >|(sdp) Session Progress 183 F9 |
> >|<ssion Progress 183 F9<| | 1 PF:9 0.0002
> >22/Apr/03 19:09:28.5537
> >| | |
> >|>F10 PRACK ----------->| | 1 PF:10 0.1004
> >22/Apr/03 19:09:28.6540
> >| | |
> >| |>F11 PRACK ----------->| 1 PF:11 0.0004
> >22/Apr/03 19:09:28.6544
> >| | |
> >| |<---------- OK 200 F12<| 1 PF:12 0.0016
> >22/Apr/03 19:09:28.6560
> >| | |
> >|<---------- OK 200 F13<| | 1 PF:13 0.0002
> >22/Apr/03 19:09:28.6561
> >| | |
> >| | |
> >| | |
> >| | |
> >| | |
> >| | |
> >| |<-----(sdp) OK 200 F14<| 1 PF:14 5.3467
> >22/Apr/03 19:09:34.0028
> >| | |
> >|<-----(sdp) OK 200 F15<| | 1 PF:15 0.0003
> >22/Apr/03 19:09:34.0031
> >| | |
> >|>F16 ACK ------------->| | 1 PF:16 0.0986
> >22/Apr/03 19:09:34.1017
> >| | |
> >| |<-----(sdp) OK 200 F17<| 1 PF:17 0.4004
> >22/Apr/03 19:09:34.5022
> >| | |
> >|<-----(sdp) OK 200 F18<| | 1 PF:18 0.0003
> >22/Apr/03 19:09:34.5024
> >| | |
> >|>F19 ACK ------------->| | 1 PF:19 0.0578
> >22/Apr/03 19:09:34.5602
> >| | |
> >| |<-----(sdp) OK 200 F20<| 1 PF:20 0.9418
> >22/Apr/03 19:09:35.5019
> >| | |
> >|<-----(sdp) OK 200 F21<| | 1 PF:21 0.0003
> >22/Apr/03 19:09:35.5022
> >| | |
> >|>F22 ACK ------------->| | 1 PF:22 0.0584
> >22/Apr/03 19:09:35.5606
> >| | |
> >| |<-----(sdp) OK 200 F23<| 1 PF:23 1.9413
> >22/Apr/03 19:09:37.5019
> >| | |
> >|<-----(sdp) OK 200 F24<| | 1 PF:24 0.0003
> >22/Apr/03 19:09:37.5022
> >| | |
> >|>F25 ACK ------------->| | 1 PF:25 0.0649
> >22/Apr/03 19:09:37.5671
> >
> >=============================================================
> ===========
> >========