Hi,
I have a problem with SER rocognizing BYE messages sent from Asterisk - which in turn leaves open connections in my accounting database.
My setup is as follows:
UA--NAT--(Internet)--SER--(Internet)--Asterisk--(PSTN)--POTS sss.sss.ss.sss aaa.aaa.aa.aaa
My problem is when I place a call from the SIP UA to a PSTN phone through Asterisk and the PSTN phone releases the connection. SER fails to recognize the BYE message sent by Asterisk and does not put a 'stop time' entry into my radius database. This does not happen when I call other SIP UA (with the other UA also behind NAT).
Below I've attached:
1. ser.cfg for the call 2. asterisk sip debug log 3. sip trace from the UA machine
Any help appreciated here, without this I have no billing !
Thanks,
Dave
1. ser.cfg for the call: ---------------------------------------------------------------------------- -------------------------------------------------
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd) #fork=yes #log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode debug=9 fork=no log_stderror=yes */
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) #port=5060 #children=4 fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so" loadmodule "/usr/local/lib/ser/modules/tm.so" loadmodule "/usr/local/lib/ser/modules/rr.so" loadmodule "/usr/local/lib/ser/modules/maxfwd.so" loadmodule "/usr/local/lib/ser/modules/usrloc.so" loadmodule "/usr/local/lib/ser/modules/registrar.so" loadmodule "/usr/local/lib/ser/modules/textops.so"
# accounting loadmodule "/usr/local/lib/ser/modules/acc.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/local/lib/ser/modules/auth.so" loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# Nathelper loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database # for persistent storage and comment the previous line modparam("usrloc", "db_mode", 2)
# -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) # modparam("auth_db", "password_column", "password")
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# -- nathelper params -- modparam("registrar", "nat_flag", 6) modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1)
# -- acc params -- modparam("acc", "radius_config", "/usr/local/etc/radiusclient/radiusclient.conf") modparam("acc", "log_level", 1) modparam("acc", "radius_flag", 1) modparam("acc", "report_ack", 0)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); break; }; if ( msg:len > max_len ) { sl_send_reply("513", "Message too big"); break; }; # sprawdzamy czy odzywa sie ktos z za natu.... if (nat_uac_test("3")) {
if (method == "REGISTER" || !search("^Record-Route:")) { log("LOG: Kolejny NATowiec...\n");
fix_nated_contact(); if (method == "INVITE") { fix_nated_sdp("1"); }; force_rport(); # dodaj do Via - topmost setflag(6); # odznacz jako nated }; };
# 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 record_route(); # loose-route processing if (loose_route()) { route(1); #t_relay(); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) # if (uri=="aaa.aaa.aa.aaa") {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication if (!www_authorize("sss.sss.ss.sss", "subscriber")) { www_challenge("sss.sss.ss.sss", "0"); break; };
save("location"); break; }; setflag(1); # native SIP destinations are handled using our USRLOC DB # going to our sip users ? if (uri=~"sip:326794*" || uri=~"sip:58279*") {
if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; route(1); # going to pstn } else { # }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP
# coming from fax ? if (search("(f|From): .*3267940@*")) { # fax numbers # forward to fax gw rewritehostport("192.168.0.250:5060"); } else { # forward to voice gw rewritehostport("aaa.aaa.aa.aaa:5060"); }; if (!t_relay()) { sl_reply_error(); }; }; # sprawdzamy czy wysylamy do natowanych abonentow #setflag(1); #route(1); # if (!t_relay()) { # sl_reply_error(); #}; }
route[1] { # if (uri=~"[@:](192.168.|10.|172.(1[6-9]|2[0-9]|3[0-1]).)" && !search("^Route:")){ # sl_send_reply("479", "We don't forward to private IP addresses"); # break; # };
# jezeli za natem to uzywamy rtp relay if (isflagset(6)){ force_rtp_proxy(); };
# natowe przetwarzanie odpowiedzi, ma sie do wszystkich transakcji t_on_reply("1");
# nat zalatwiony wysylamy, stateful relaying if (!t_relay()){ sl_reply_error(); }; }
onreply_route[1] { # nated ? if (isflagset(6) && status =~ "(183)|2[0-9][0-9]"){ fix_nated_contact(); force_rtp_proxy(); # lub, jezeli transakcja jest natowana ale nie wiedzielismy o tym # przetwarzajac zapytanie... } else if (nat_uac_test("1")) { fix_nated_contact(); }; }
2. asterisk sip debug log: ---------------------------------------------------------------------------- -------------------------------------------------
Found audio format UNKN Found description format pcmu Found description format pcma Found description format speex Found description format telephone-event Capabilities: us - 270, them - 524/0, combined - 12 Non-codec capabilities: us - 1, them - 1, combined - 1 Looking for 0225827915 in default list_route: hop: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on list_route: hop: sip:3267915@80.55.21.254:1184 Transmitting (no NAT): SIP/2.0 100 Trying Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKd56d.7b60dd2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Length: 0
to sss.sss.ss.sss:5060 -- Executing SetCallerID("SIP/-08161e80", "223267915") in new stack -- Executing Dial("SIP/-08161e80", "Zap/g1/0225827915") in new stack -- Called g1/0225827915 We're at aaa.aaa.aa.aaa port 10548 Answering with preferred capability 4 Answering with preferred capability 8 Answering with non-codec capability 1 Transmitting (no NAT): SIP/2.0 183 Session Progress Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKd56d.7b60dd2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26423 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
to sss.sss.ss.sss:5060 Feb 27 18:21:48 NOTICE[1236268096]: chan_zap.c:3587 zt_read: Fax detected, but no fax extension -- Zap/1-1 is making progress passing it to SIP/-08161e80 -- Zap/1-1 is ringing 11 headers, 0 lines
10 headers, 0 lines -- Zap/1-1 answered SIP/-08161e80 We're at aaa.aaa.aa.aaa port 10548 Answering with preferred capability 4 Answering with preferred capability 8 Answering with non-codec capability 1 Reliably Transmitting (no NAT): SIP/2.0 200 OK Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKd56d.7b60dd2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26424 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
to sss.sss.ss.sss:5060 asterisk*CLI>
Sip read: ACK sip:0225827915@aaa.aaa.aa.aaa:5060 SIP/2.0 Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Via: SIP/2.0/UDP sss.sss.ss.sss;branch=0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK33D0B46E959 A49B2914EB72B18029B74 From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Contact: sip:3267915@80.55.21.254:1184 Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 ACK Max-Forwards: 69 Content-Length: 0
11 headers, 0 lines -- Channel 1, span 1 got hangup -- Hungup 'Zap/1-1' == Spawn extension (default, 0225827915, 2) exited non-zero on 'SIP/-08161e80' set_destination: Parsing sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on for address/port to send to set_destination: set destination to sss.sss.ss.sss, port 5060 Reliably Transmitting: BYE sip:3267915@80.55.21.254:1184 SIP/2.0 Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d Route: sip:3267915@80.55.21.254:1184 From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:0225827915@aaa.aaa.aa.aaa Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE User-Agent: Asterisk PBX Content-Length: 0
(no NAT) to sss.sss.ss.sss:5060 asterisk*CLI>
Sip read: SIP/2.0 200 Ok Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:3267915@192.168.2.32:5060 Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE Server: X-Lite build 1088 Content-Length: 0
10 headers, 0 lines Message is BYE
3. sip trace from the UA machine: ---------------------------------------------------------------------------- -------------------------------------------------
Sip Scenario Trace
File: radius_calledstat_ends4 Generated: Fri Feb 27 18:32:43 2004 Traced on: Fri Feb 27 18:23:34 2004 Created by:\Mielonka\Techniczny\sip_project\test_tools\sip_scenario\sip_scenario.ex e version=1.2.0
192.168.2.32:5060 sss.sss.ss.sss:5060 | | <Call><PFrame><Time> | | |>F1 INVITE (sdp)-------------------------------->| 1 PF:224 18:23:51.4621 | | |<- trying -- your call is important to us 100 F2<| 1 PF:227 18:23:51.5577 | | |<------------------(sdp) Session Progress 183 F3<| 1 PF:233 18:23:51.5942 | | |>F4 (sip incomplete) >>>------------------------>| 1 PF:1097 18:24:1.2413 | | |<--------------------------------(sdp) OK 200 F5<| 1 PF:1407 18:24:4.5217 | | |>F6 ACK ---------------------------------------->| 1 PF:1410 18:24:4.5381 | | |<---------------------------------------- BYE F7<| 1 PF:1542 18:24:5.9842 | | |>F8 200 Ok ------------------------------------->| 1 PF:1543 18:24:5.9935 | | |<--------------------------<<< (sip fragment) F9<| 2 PF:2500 18:26:9.9414
============================================================================ ====
SIP MESSAGE 1 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 224 27/Feb/04 18:23:51.4621 TimeFromPreviousSipFrame=17.4501 TimeFromStart=17.4501 INVITE sip:0225827915@sss.sss.ss.sss SIP/2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;rport;branch=z9hG4bK3AB182BF55374A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss Contact: sip:3267915@192.168.2.32:5060 Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE Max-Forwards: 70 Content-Type: application/sdp User-Agent: X-Lite build 1088 Content-Length: 247
v=0 o=3267915 27731078 27731078 IN IP4 192.168.2.32 s=X-Lite c=IN IP4 192.168.2.32 t=0 0 m=audio 8000 RTP/AVP 0 8 97 101 a=rtpmap:0 pcmu/8000 a=rtpmap:8 pcma/8000 a=rtpmap:97 speex/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15
============================================================================ ====
SIP MESSAGE 2 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 227 27/Feb/04 18:23:51.5577 TimeFromPreviousSipFrame=0.0956 TimeFromStart=17.5457 SIP/2.0 100 trying -- your call is important to us Via: SIP/2.0/UDP 192.168.2.32:5060;rport=1184;branch=z9hG4bK3AB182BF55374A818403FAF5511D2C7B; received=80.55.21.254 From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE Server: Sip EXpress router (0.8.12-tcp_nonb (i386/linux)) Content-Length: 0 Warning: 392 sss.sss.ss.sss:5060 "Noisy feedback tells: pid=7250 req_src_ip=80.55.21.254 req_src_port=1184 in_uri=sip:0225827915@sss.sss.ss.sss out_uri=sip:0225827915@aaa.aaa.aa.aaa:5060 via_cnt==1"
============================================================================ ====
SIP MESSAGE 3 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 233 27/Feb/04 18:23:51.5942 TimeFromPreviousSipFrame=0.0365 TimeFromStart=17.5822 SIP/2.0 183 Session Progress Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26423 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
============================================================================ ====
SIP MESSAGE 4 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 1097 27/Feb/04 18:24:1.2413 TimeFromPreviousSipFrame=9.6471 TimeFromStart=27.2293 Extra Information: Packet is not a complete SIP message
============================================================================ ====
SIP MESSAGE 5 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 1407 27/Feb/04 18:24:4.5217 TimeFromPreviousSipFrame=3.2805 TimeFromStart=30.5098 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26424 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
============================================================================ ====
SIP MESSAGE 6 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 1410 27/Feb/04 18:24:4.5381 TimeFromPreviousSipFrame=0.0164 TimeFromStart=30.5261 ACK sip:0225827915@aaa.aaa.aa.aaa SIP/2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;rport;branch=z9hG4bK33D0B46E959A49B2914EB72B18029B74 From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Contact: sip:3267915@192.168.2.32:5060 Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 ACK Max-Forwards: 70 Content-Length: 0
============================================================================ ====
SIP MESSAGE 7 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 1542 27/Feb/04 18:24:5.9842 TimeFromPreviousSipFrame=1.4461 TimeFromStart=31.9723 BYE sip:3267915@80.55.21.254:1184 SIP/2.0 Max-Forwards: 10 Record-Route: sip:3267915@sss.sss.ss.sss;ftag=as37250f4f;lr=on Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKe74a.b59c9824.0 Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:0225827915@aaa.aaa.aa.aaa Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE User-Agent: Asterisk PBX Content-Length: 0 Route: sip:3267915@80.55.21.254:1184
============================================================================ ====
SIP MESSAGE 8 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 1543 27/Feb/04 18:24:5.9935 TimeFromPreviousSipFrame=0.0092 TimeFromStart=31.9815 SIP/2.0 200 Ok Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKe74a.b59c9824.0 Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:3267915@192.168.2.32:5060 Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE Server: X-Lite build 1088 Content-Length: 0
============================================================================ ====
SIP MESSAGE 9 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 2500 27/Feb/04 18:26:9.9414 TimeFromPreviousSipFrame=123.9479 TimeFromStart=155.9294 Extra Information: Packet was continued from Frame=1643 Extra Information: Packet was continued from Frame=2179 Extra Information: Packet was continued from Frame=2279 Extra Information: Packet was continued from Frame=2369 Extra Information: Packet is not a complete SIP message Extra Information: Packet does NOT contain a SIP Header but was in the same connection as Frame=1542
============================================================================ ====
2 incomplete sip message(s) encountered
Maybe it's a loose_route problem. If the BYE message is caught in the loose_route block, and sent to route[1], then the BYE message does not see a setflag(1).
Klaus
Dawid Mielnik wrote:
Hi,
I have a problem with SER rocognizing BYE messages sent from Asterisk - which in turn leaves open connections in my accounting database.
My setup is as follows:
UA--NAT--(Internet)--SER--(Internet)--Asterisk--(PSTN)--POTS sss.sss.ss.sss aaa.aaa.aa.aaa
My problem is when I place a call from the SIP UA to a PSTN phone through Asterisk and the PSTN phone releases the connection. SER fails to recognize the BYE message sent by Asterisk and does not put a 'stop time' entry into my radius database. This does not happen when I call other SIP UA (with the other UA also behind NAT).
Below I've attached:
- ser.cfg for the call
- asterisk sip debug log
- sip trace from the UA machine
Any help appreciated here, without this I have no billing !
Thanks,
Dave
- ser.cfg for the call:
# # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $ # # simple quick-start config script #
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd) #fork=yes #log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode debug=9 fork=no log_stderror=yes */
check_via=no # (cmd. line: -v) dns=no # (cmd. line: -r) rev_dns=no # (cmd. line: -R) #port=5060 #children=4 fifo="/tmp/ser_fifo"
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so" loadmodule "/usr/local/lib/ser/modules/tm.so" loadmodule "/usr/local/lib/ser/modules/rr.so" loadmodule "/usr/local/lib/ser/modules/maxfwd.so" loadmodule "/usr/local/lib/ser/modules/usrloc.so" loadmodule "/usr/local/lib/ser/modules/registrar.so" loadmodule "/usr/local/lib/ser/modules/textops.so"
# accounting loadmodule "/usr/local/lib/ser/modules/acc.so"
# Uncomment this if you want digest authentication # mysql.so must be loaded ! loadmodule "/usr/local/lib/ser/modules/auth.so" loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# Nathelper loadmodule "/usr/local/lib/ser/modules/nathelper.so"
# ----------------- setting module-specific parameters ---------------
# -- usrloc params --
#modparam("usrloc", "db_mode", 0)
# Uncomment this if you want to use SQL database # for persistent storage and comment the previous line modparam("usrloc", "db_mode", 2)
# -- auth params -- # Uncomment if you are using auth module # modparam("auth_db", "calculate_ha1", yes) # # If you set "calculate_ha1" parameter to yes (which true in this config), # uncomment also the following parameter) # modparam("auth_db", "password_column", "password")
# -- rr params -- # add value to ;lr param to make some broken UAs happy modparam("rr", "enable_full_lr", 1)
# -- nathelper params -- modparam("registrar", "nat_flag", 6) modparam("nathelper", "natping_interval", 30) modparam("nathelper", "ping_nated_only", 1)
# -- acc params -- modparam("acc", "radius_config", "/usr/local/etc/radiusclient/radiusclient.conf") modparam("acc", "log_level", 1) modparam("acc", "radius_flag", 1) modparam("acc", "report_ack", 0)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("10")) { sl_send_reply("483","Too Many Hops"); break; }; if ( msg:len > max_len ) { sl_send_reply("513", "Message too big"); break; }; # sprawdzamy czy odzywa sie ktos z za natu.... if (nat_uac_test("3")) {
if (method == "REGISTER" || !search("^Record-Route:")) { log("LOG: Kolejny NATowiec...\n"); fix_nated_contact(); if (method == "INVITE") { fix_nated_sdp("1"); }; force_rport(); # dodaj do Via - topmost setflag(6); # odznacz jako nated };
};
# 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 record_route(); # loose-route processing if (loose_route()) { route(1); #t_relay(); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) # if (uri=="aaa.aaa.aa.aaa") {
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication if (!www_authorize("sss.sss.ss.sss", "subscriber")) { www_challenge("sss.sss.ss.sss", "0"); break; };
save("location"); break; };
setflag(1); # native SIP destinations are handled using our USRLOC DB # going to our sip users ? if (uri=~"sip:326794*" || uri=~"sip:58279*") {
if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; }; route(1);
# going to pstn } else { # }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP
# coming from fax ? if (search("(f|From): .*3267940@*")) { # fax numbers # forward to fax gw rewritehostport("192.168.0.250:5060"); } else { # forward to voice gw rewritehostport("aaa.aaa.aa.aaa:5060"); }; if (!t_relay()) { sl_reply_error(); }; }; # sprawdzamy czy wysylamy do natowanych abonentow #setflag(1); #route(1); # if (!t_relay()) { # sl_reply_error(); #}; }
route[1] { # if (uri=~"[@:](192.168.|10.|172.(1[6-9]|2[0-9]|3[0-1]).)" && !search("^Route:")){ # sl_send_reply("479", "We don't forward to private IP addresses"); # break; # };
# jezeli za natem to uzywamy rtp relay if (isflagset(6)){ force_rtp_proxy(); }; # natowe przetwarzanie odpowiedzi, ma sie do wszystkich transakcji t_on_reply("1"); # nat zalatwiony wysylamy, stateful relaying if (!t_relay()){
sl_reply_error(); }; }
onreply_route[1] { # nated ? if (isflagset(6) && status =~ "(183)|2[0-9][0-9]"){ fix_nated_contact(); force_rtp_proxy(); # lub, jezeli transakcja jest natowana ale nie wiedzielismy o tym # przetwarzajac zapytanie... } else if (nat_uac_test("1")) { fix_nated_contact(); }; }
- asterisk sip debug log:
Found audio format UNKN Found description format pcmu Found description format pcma Found description format speex Found description format telephone-event Capabilities: us - 270, them - 524/0, combined - 12 Non-codec capabilities: us - 1, them - 1, combined - 1 Looking for 0225827915 in default list_route: hop: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on list_route: hop: sip:3267915@80.55.21.254:1184 Transmitting (no NAT): SIP/2.0 100 Trying Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKd56d.7b60dd2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Length: 0
to sss.sss.ss.sss:5060 -- Executing SetCallerID("SIP/-08161e80", "223267915") in new stack -- Executing Dial("SIP/-08161e80", "Zap/g1/0225827915") in new stack -- Called g1/0225827915 We're at aaa.aaa.aa.aaa port 10548 Answering with preferred capability 4 Answering with preferred capability 8 Answering with non-codec capability 1 Transmitting (no NAT): SIP/2.0 183 Session Progress Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKd56d.7b60dd2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26423 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
to sss.sss.ss.sss:5060 Feb 27 18:21:48 NOTICE[1236268096]: chan_zap.c:3587 zt_read: Fax detected, but no fax extension -- Zap/1-1 is making progress passing it to SIP/-08161e80 -- Zap/1-1 is ringing 11 headers, 0 lines
10 headers, 0 lines -- Zap/1-1 answered SIP/-08161e80 We're at aaa.aaa.aa.aaa port 10548 Answering with preferred capability 4 Answering with preferred capability 8 Answering with non-codec capability 1 Reliably Transmitting (no NAT): SIP/2.0 200 OK Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKd56d.7b60dd2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26424 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
to sss.sss.ss.sss:5060 asterisk*CLI>
Sip read: ACK sip:0225827915@aaa.aaa.aa.aaa:5060 SIP/2.0 Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Via: SIP/2.0/UDP sss.sss.ss.sss;branch=0 Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK33D0B46E959 A49B2914EB72B18029B74 From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Contact: sip:3267915@80.55.21.254:1184 Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 ACK Max-Forwards: 69 Content-Length: 0
11 headers, 0 lines -- Channel 1, span 1 got hangup -- Hungup 'Zap/1-1' == Spawn extension (default, 0225827915, 2) exited non-zero on 'SIP/-08161e80' set_destination: Parsing sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on for address/port to send to set_destination: set destination to sss.sss.ss.sss, port 5060 Reliably Transmitting: BYE sip:3267915@80.55.21.254:1184 SIP/2.0 Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d Route: sip:3267915@80.55.21.254:1184 From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:0225827915@aaa.aaa.aa.aaa Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE User-Agent: Asterisk PBX Content-Length: 0
(no NAT) to sss.sss.ss.sss:5060 asterisk*CLI>
Sip read: SIP/2.0 200 Ok Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:3267915@192.168.2.32:5060 Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE Server: X-Lite build 1088 Content-Length: 0
10 headers, 0 lines Message is BYE
- sip trace from the UA machine:
Sip Scenario Trace
File: radius_calledstat_ends4 Generated: Fri Feb 27 18:32:43 2004 Traced on: Fri Feb 27 18:23:34 2004 Created by:\Mielonka\Techniczny\sip_project\test_tools\sip_scenario\sip_scenario.ex e version=1.2.0
192.168.2.32:5060 sss.sss.ss.sss:5060 | | <Call><PFrame><Time> | | |>F1 INVITE (sdp)-------------------------------->| 1 PF:224 18:23:51.4621 | | |<- trying -- your call is important to us 100 F2<| 1 PF:227 18:23:51.5577 | | |<------------------(sdp) Session Progress 183 F3<| 1 PF:233 18:23:51.5942 | | |>F4 (sip incomplete) >>>------------------------>| 1 PF:1097 18:24:1.2413 | | |<--------------------------------(sdp) OK 200 F5<| 1 PF:1407 18:24:4.5217 | | |>F6 ACK ---------------------------------------->| 1 PF:1410 18:24:4.5381 | | |<---------------------------------------- BYE F7<| 1 PF:1542 18:24:5.9842 | | |>F8 200 Ok ------------------------------------->| 1 PF:1543 18:24:5.9935 | | |<--------------------------<<< (sip fragment) F9<| 2 PF:2500 18:26:9.9414
============================================================================
SIP MESSAGE 1 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 224 27/Feb/04 18:23:51.4621
TimeFromPreviousSipFrame=17.4501 TimeFromStart=17.4501 INVITE sip:0225827915@sss.sss.ss.sss SIP/2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;rport;branch=z9hG4bK3AB182BF55374A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss Contact: sip:3267915@192.168.2.32:5060 Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE Max-Forwards: 70 Content-Type: application/sdp User-Agent: X-Lite build 1088 Content-Length: 247
v=0 o=3267915 27731078 27731078 IN IP4 192.168.2.32 s=X-Lite c=IN IP4 192.168.2.32 t=0 0 m=audio 8000 RTP/AVP 0 8 97 101 a=rtpmap:0 pcmu/8000 a=rtpmap:8 pcma/8000 a=rtpmap:97 speex/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15
============================================================================
SIP MESSAGE 2 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 227 27/Feb/04 18:23:51.5577
TimeFromPreviousSipFrame=0.0956 TimeFromStart=17.5457 SIP/2.0 100 trying -- your call is important to us Via: SIP/2.0/UDP 192.168.2.32:5060;rport=1184;branch=z9hG4bK3AB182BF55374A818403FAF5511D2C7B; received=80.55.21.254 From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE Server: Sip EXpress router (0.8.12-tcp_nonb (i386/linux)) Content-Length: 0 Warning: 392 sss.sss.ss.sss:5060 "Noisy feedback tells: pid=7250 req_src_ip=80.55.21.254 req_src_port=1184 in_uri=sip:0225827915@sss.sss.ss.sss out_uri=sip:0225827915@aaa.aaa.aa.aaa:5060 via_cnt==1"
============================================================================
SIP MESSAGE 3 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 233 27/Feb/04 18:23:51.5942
TimeFromPreviousSipFrame=0.0365 TimeFromStart=17.5822 SIP/2.0 183 Session Progress Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26423 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
============================================================================
SIP MESSAGE 4 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 1097 27/Feb/04 18:24:1.2413
TimeFromPreviousSipFrame=9.6471 TimeFromStart=27.2293 Extra Information: Packet is not a complete SIP message
============================================================================
SIP MESSAGE 5 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 1407 27/Feb/04 18:24:4.5217
TimeFromPreviousSipFrame=3.2805 TimeFromStart=30.5098 SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.2.32:5060;received=80.55.21.254;rport=1184;branch=z9hG4bK3AB182BF553 74A818403FAF5511D2C7B Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 INVITE User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER Contact: sip:0225827915@aaa.aaa.aa.aaa Content-Type: application/sdp Content-Length: 217
v=0 o=root 26423 26424 IN IP4 aaa.aaa.aa.aaa s=session c=IN IP4 aaa.aaa.aa.aaa t=0 0 m=audio 10548 RTP/AVP 0 8 101 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16
============================================================================
SIP MESSAGE 6 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 1410 27/Feb/04 18:24:4.5381
TimeFromPreviousSipFrame=0.0164 TimeFromStart=30.5261 ACK sip:0225827915@aaa.aaa.aa.aaa SIP/2.0 Via: SIP/2.0/UDP 192.168.2.32:5060;rport;branch=z9hG4bK33D0B46E959A49B2914EB72B18029B74 From: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 To: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f Contact: sip:3267915@192.168.2.32:5060 Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 58806 ACK Max-Forwards: 70 Content-Length: 0
============================================================================
SIP MESSAGE 7 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 1542 27/Feb/04 18:24:5.9842
TimeFromPreviousSipFrame=1.4461 TimeFromStart=31.9723 BYE sip:3267915@80.55.21.254:1184 SIP/2.0 Max-Forwards: 10 Record-Route: sip:3267915@sss.sss.ss.sss;ftag=as37250f4f;lr=on Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKe74a.b59c9824.0 Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:0225827915@aaa.aaa.aa.aaa Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE User-Agent: Asterisk PBX Content-Length: 0 Route: sip:3267915@80.55.21.254:1184
============================================================================
SIP MESSAGE 8 192.168.2.32:5060(1) -> sss.sss.ss.sss:5060(2) UDP Frame 1543 27/Feb/04 18:24:5.9935
TimeFromPreviousSipFrame=0.0092 TimeFromStart=31.9815 SIP/2.0 200 Ok Via: SIP/2.0/UDP sss.sss.ss.sss;branch=z9hG4bKe74a.b59c9824.0 Via: SIP/2.0/UDP aaa.aaa.aa.aaa:5060;branch=z9hG4bK49c1001d From: sip:0225827915@sss.sss.ss.sss;tag=as37250f4f To: Dawid Mielnik sip:3267915@sss.sss.ss.sss;tag=896605854 Contact: sip:3267915@192.168.2.32:5060 Record-Route: sip:0225827915@sss.sss.ss.sss;ftag=896605854;lr=on Call-ID: AB33A916-A194-4C39-AF7C-7BAF0ED22473@192.168.2.32 CSeq: 102 BYE Server: X-Lite build 1088 Content-Length: 0
============================================================================
SIP MESSAGE 9 sss.sss.ss.sss:5060(2) -> 192.168.2.32:5060(1) UDP Frame 2500 27/Feb/04 18:26:9.9414
TimeFromPreviousSipFrame=123.9479 TimeFromStart=155.9294 Extra Information: Packet was continued from Frame=1643 Extra Information: Packet was continued from Frame=2179 Extra Information: Packet was continued from Frame=2279 Extra Information: Packet was continued from Frame=2369 Extra Information: Packet is not a complete SIP message Extra Information: Packet does NOT contain a SIP Header but was in the same connection as Frame=1542
============================================================================
2 incomplete sip message(s) encountered
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers