Jiri,
I think the issue here is that we need to be able to set different call timers based on the destination of the call.
If we have a user subscribed to voicemail, we would want a call_timer of 8 seconds for example.
If we have a user that isn't subscribed to voicemail or a call being placed to the pstn, we might want a 60 second call timer.
I'm sure you can see the problem... We can't fail our outbound calls after 8 seconds, and we can't wait 60 seconds to route incoming calls to voicemail.
Stephen
Subject: Re: [Serusers] Implementing Voicemail-Round 2- t_newtran ERROR
Gavin,
I am not exactly sure what the problem is -- indeed, SER transactions time out after some period of time, that's normal behaviour. It is called C-timer in RFC3261, we call the "tm" timer "inv_fr_invite" and can change its value with modparam. When the timer fires, the transaction is cancelled and deleted from server's memory not to waste it for ever. That's it.
If you wish for-ever ringing phones, without proxy cancelling expired transactions you can do so under some specific circumstances. Then proxy drops pending transactions silently, without explicit cancellation, and the transactions may complete statelessly. If my memory serves, this behaviour is actually default unless any of frequent conditions occurs which requires stateful completion. Such conditions are SIP forking, use of accounting, on_failure processing, explicitly disallowing silent transaction drop, etc. (You simply need stateful completion for any of these functions.)
The error as displayed in your logs is caused by your attempt to create two transactions for a single request. You create the first transaction context in route[]. When failure_route is triggered, you follow failure_route[1] and route[3] in which you attempt to create yet another transaction context.
Also, let me remind again: VM module was designed for use in a UAS which stands separately from a proxy server. We never tried to mix proxy with voicemail in a single server instance. I will be glad to look at it as time allows, but I doubt it works now.
-jiri
At 11:40 PM 9/25/2003, Gavin Bensom wrote:
Steve and all, Did you ever get resolution on the issue of the timeout and
t_on_failure commands killing or routing PSTN calls to voicemail?
I looked through the mail archives and it isn't clear what the
resolution was. I'm running into the same problem. If I set t_on_failure to occur after a certain timeout, outgoing PSTN calls fail after that timeout as well.
In fact, it seems that calls fail after the timeout even if
t_on_failure isn't set.
I've successfully gotten outgoing PSTN calls being handled by a
different t_relay than incoming or internal network calls.
What did you do to resolve the issue?
My config.
RedHat 9.0 kernel 2.4.20-20smp ser 0.8.11 (i386/linux) main.c, v 1.162.2.5
Also, when a Status: 486 (busy) is encountered on the recieving party
side, or a timeout occurs due to fr_inv_timer, I'm getting this error in my log
Sep 25 14:07:56 jiffypop /usr/local/sbin/ser[23164]: ERROR: t_newtran:
transaction already in process 0x422c0b38
Anyone have any ideas on what the problem is? ser.cft and ngrep output attached.
Thanks, G
Steve Dolloff sdolloff@noc.dls.net wrote:
I did place this portion inside the myself check and it still tries to transfer to vm after the time expires.
I'm puzzled -- did not you want to transfer to vm after the time
expires?
I will try to make this clearer. I am behind an ATA with a SIP proxy of 209.242.10.153. If I call someone else registered on my domain and they are not available, I want to go to voice mail. If I call 1-800-555-1212 from my phone, I do not want my sip proxy to reroute the call to voicemail after 10 seconds if no one answers(or ever for that matter). Right now if I dial 18005551212 from my handset, I see the destination as sip:18005551212@209.242.10.153 on the server which matches to myself and ser tries to send it to voicemail.
Someone calling into the network is not a problem. They will never hit our server unless the destination is local.
This is the part that I really need help with! When the call timer fails, the call goes to the route[1]. How do I get it into voice mail from that point?
See bellow, I think that should work.
This is what I had originally, and I get the following syslog.
Sep 10 16:36:36 voip2 ser: parse error (127,37-38): Command cannot be used in the block Sep 10 16:36:36 voip2 ser: ERROR: bad config file (1 errors) Sep 10 16:36:36 voip2 ser: ser startup failed
Is says that vm is not valid in the block. According the admin guide, only certain commands can be used within a failure block. I assume that is the problem here. If not, please let me know as this is exactly what I want to do.
THE SAME STUFF LIKE ABOVE, YOU DON'T WANT TO t_relay ANYTHING
if(!vm("/tmp/am_fifo","voicemail")){ t_reply("500", "SEMS error"); }; break;
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Do you Yahoo!? <http://shopping.yahoo.com/?__yltc=s%3A150000443%2Cd%3A22708228%2Cslk%3
Atext%2Csec%3Amail>The New Yahoo! Shopping - with improved product search
# # $Id: ser.cfg,v 1.20 2003/05/31 21:12:19 jiri 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=8 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" sip_warning=no # # ------------------ 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/vm.so" loadmodule "/usr/local/lib/ser/modules/pa.so" loadmodule "/usr/local/lib/ser/modules/msilo.so" loadmodule "/usr/local/lib/ser/modules/acc.so" loadmodule "/usr/local/lib/ser/modules/textops.so" # #loadmodule "/usr/local/lib/ser/modules/nathelper.so" #loadmodule "/usr/local/lib/ser/modules/uri.so" #loadmodule "/usr/local/lib/ser/modules/group.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" # # ----------------- 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") # # modparam("acc", "log_level", 1) modparam("acc", "log_flag", 2) modparam("acc", "log_missed_flag", 2) modparam("acc", "log_fmt", "fimos") # #modparam("tm", "fr_inv_timer", 15) #INVITE timeout #modparam("tm", "fr_timer", 5) #negative INVITE reply or no #final reply for a request for ACK # modparam("voicemail", "db_url", "sql://ser:heslo@localhost/ser") # #modparam("acc", "db_url", "sql://ser:heslo@localhost/ser") #modparam("acc", "db_flag", 2) #modparam("acc", "db_missed_flag", 2) # # ------------------------- request routing logic ------------------- # # main routing logic # alias=10.10.10.49 #sip server IP address alias=jiffypop #sip server name alias=mydomain.com #sip domain/realm alias=jiffypop.mydomain.com #sip server FQDN # route{ log(1,"entering main route"); #prevent strangers from claiming to belong to our domain; #if sender claims to be in our domain in From header field, #better authenticate him # code not inserted yet :)
# 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 (len_gt( max_len )) { sl_send_reply("513", "Message too big"); break; }; # 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()) { t_relay(); break; }; setflag(2); #set flag for accounting # 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==myself) { if (method=="REGISTER") { # digest authentication log(1,"request for registration"); if (!www_authorize("mydomain.com",
"subscriber")) {
www_challenge("mydomain.com", "0"); break; }; save("location"); break; };
/* ********** Dial out to PSTN logic ************* */
#forward numerical 7 digit requests to gateway
if(uri=~"^sip:[0-9]{7}@(mydomain.com|10.10.10.49)"){
rewritehostport("10.10.10.5:5060"); log(1,"7 digit expression match"); route(2); break; }; # strip 650 and forward to GW if user dials 650 before
phone no.
if(uri=~"^sip:650[0-9]{7}@(mydomain.com|10.10.10.49)"){
strip(3); rewritehostport("10.10.10.5:5060"); log(1,"650 area code dialed, 650 stripped"); route(2); break; }; #forward numerical 10 digit requests to gateway, append
a 1 first
if(uri=~"^sip:[0-9]{10}@(mydomain.com|10.10.10.49)"){
prefix("1"); rewritehostport("10.10.10.5:5060"); log(1,"10 digit expression match, prefix 1"); route(2); break; }; #forward numerical 11 digit requests that start with a
1 to GW
if(uri=~"^sip:1[0-9]{10}@(mydomain.com|10.10.10.49)"){
rewritehostport("10.10.10.5:5060"); log(1,"10 digit exp match w/leading 1"); route(2); break; }; #forward international N digit requests to gateway
if(uri=~"^sip:011[0-9]+@(mydomain.com|10.10.10.49)"){
rewritehostport("10.10.10.5:5060"); log(1,"international expression match"); route(2); break; };
/* ********** VOICEMAIL logic ************* */
if (uri=~"^sip:voicemail\+@"){ log(1,"sip:voicemail uri match"); route(3); break; };
/* ****** Find Aliases and Locations of users ********* */ # It is very important to lookup "aliases" before looking up
"locations"
if(!lookup("aliases")){ log(1,"Couldn't find any matching alias"); sl_send_reply("404", "User does not exist"); break; }; if(!lookup("location")) { log(1,"unable to locate user"); route(3); break; }; }; # forward to current uri now; use stateful forwarding; that # works reliably even if we forward from TCP to UDP log(1,"routing at eof: should not occur for outgoing PSTN
calls");
t_on_failure("1"); if (!t_relay()) { sl_reply_error(); }; log(1,"eof");
}
route[2]{ log(1,"route[2]:SIP-to-PSTN call routed"); if(!t_relay()){ sl_reply_error(); }; }
route[3]{ log(1,"route[3]: voicemail processing"); if(method=="ACK" || method=="INVITE" || method=="BYE" ||
method=="REFER"){
log(1,"1st if entered in route[3] *vm*"); if(t_newtran()){ t_reply("100","Trying -- just a second"); if(method=="INVITE" || method=="REFER"){ log(1,"route[3]:method==INVITE ||
REFER");
if(uri =~ "conference" ){
if(!vm("/tmp/am_fifo","conference")){
log(1,"could not
contact conference server");
t_reply("500","could
not contact conference server");
}; } else if (uri =~"echo"){ if(!vm("/tmp/am_fifo","echo")){ log(1,"could not
contact echo");
t_reply("500","could
not contact echo");
}; } else{
if(!vm("/tmp/am_fifo","voicemail")){
log(1,"vm module called
and failed");
t_reply("500",
"voicemail error");
}; }; break; }; if(method=="BYE"){ log(1,"vm end/refer - begin"); if(!vm("/tmp/am_fifo","bye")){ log(1,"could not contact the
media server");
t_reply("500" , "could not
contact the media server");
}; break; }; } else{ log(1,"route[3]:could not create new
transaction");
sl_send_reply("500", "could not create new
transaction");
}; log(1,"route[3]:end of first method== check"); };
}
failure_route[1]{ log(1,"failure_route[1]:jump to vm: route[3]"); route(3); }
interface: eth0 (10.10.10.0/255.255.255.0) match: 5060 ### U 10.10.10.5:53667 -> 10.10.10.49:5060 INVITE sip:6609@10.10.10.49:5060 SIP/2.0..Via: SIP/2.0/UDP
10.10.10.5:5060..From: <sip:6502188884@10.10.10.
5>;tag=4CCDE44-B57..To: sip:6609@10.10.10.49..Date: Mon, 01 Mar
1993 22:22:15 GMT..Call-ID: A74AE3D-15AA11
CC-8071812E-8BB375E1@10.10.10.5..Supported: timer,100rel..Min-SE:
1800..Cisco-Guid: 175259037-363467212-215
4725678-2343794145..User-Agent: Cisco-SIPGateway/IOS-12.x..Allow:
INVITE, OPTIONS, BYE, CANCEL, ACK, PRACK,
COMET, REFER, SUBSCRIBE, NOTIFY, INFO..CSeq: 101
INVITE..Max-Forwards: 6..Remote-Party-ID: <sip:6502188884@1
0.10.10.5>;party=calling;screen=yes;privacy=off..Timestamp:
731024535..Contact: <sip:6502188884@10.10.10.5:5
060>..Expires: 180..Allow-Events: telephone-event..Content-Type:
application/sdp..Content-Length: 185....v=0
..o=CiscoSystemsSIP-GW-UserAgent 6694 6444 IN IP4 10.10.10.5..s=SIP
Call..c=IN IP4 10.10.10.5..t=0 0..m=audi
o 18640 RTP/AVP 0..c=IN IP4 10.10.10.5..a=rtpmap:0
PCMU/8000..a=ptime:20..
# U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 100 trying -- your call is important to us..Via: SIP/2.0/UDP
10.10.10.5:5060..From: <sip:6502188884
@10.10.10.5>;tag=4CCDE44-B57..To: sip:6609@10.10.10.49..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.
10.5..CSeq: 101 INVITE..Server: Sip EXpress router (0.8.11
(i386/linux))..Content-Length: 0....
# U 10.10.10.49:5060 -> 10.10.10.189:5060 INVITE sip:esavelle@10.10.10.189 SIP/2.0..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..Via: SIP
/2.0/UDP 10.10.10.49;branch=z9hG4bKaa33.8c7a9b23.0..Via: SIP/2.0/UDP
10.10.10.5:5060..From: <sip:6502188884
@10.10.10.5>;tag=4CCDE44-B57..To: sip:6609@10.10.10.49..Date: Mon,
01 Mar 1993 22:22:15 GMT..Call-ID: A74A
E3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..Supported:
timer,100rel..Min-SE: 1800..Cisco-Guid: 175259037-363
467212-2154725678-2343794145..User-Agent:
Cisco-SIPGateway/IOS-12.x..Allow: INVITE, OPTIONS, BYE, CANCEL, AC
K, PRACK, COMET, REFER, SUBSCRIBE, NOTIFY, INFO..CSeq: 101
INVITE..Max-Forwards: 5..Remote-Party-ID: <sip:65
02188884@10.10.10.5>;party=calling;screen=yes;privacy=off..Timestamp:
731024535..Contact: <sip:6502188884@10
.10.10.5:5060>..Expires: 180..Allow-Events:
telephone-event..Content-Type: application/sdp..Content-Length:
185....v=0..o=CiscoSystemsSIP-GW-UserAgent 6694 6444 IN IP4
10.10.10.5..s=SIP Call..c=IN IP4 10.10.10.5..t=0
0..m=audio 18640 RTP/AVP 0..c=IN IP4 10.10.10.5..a=rtpmap:0
PCMU/8000..a=ptime:20..
# U 10.10.10.189:5060 -> 10.10.10.49:5060 SIP/2.0 100 trying..Via: SIP/2.0/UDP
10.10.10.49;branch=z9hG4bKaa33.8c7a9b23.0..Via: SIP/2.0/UDP 10.10.10.5
:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..From: sip:6502188884@10.10.10.5;tag=4CCDE
44-B57..To: sip:6609@10.10.10.49..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE
..User-Agent: Grandstream SIP UA 1.0.3.81..Content-Length: 0.... # U 10.10.10.189:5060 -> 10.10.10.49:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP
10.10.10.49;branch=z9hG4bKaa33.8c7a9b23.0..Via: SIP/2.0/UDP 10.10.10.5:5060.
.Record-Route: sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..From:
sip:6502188884@10.10.10.5;tag=4CCDE44-B57
..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-08924feebae5..Call-ID : A74AE3D-15AA11CC-8071812E-8B
B375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream SIP UA
1.0.3.81..Content-Length: 0....
## U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 500 could not create new transaction..Via: SIP/2.0/UDP
10.10.10.5:5060..From: <sip:6502188884@10.10
.10.5>;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=b27e1a1d33761e85846fc98f5f3a7e58.c9a7..Call-I D: A74AE
3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..Server:
Sip EXpress router (0.8.11 (i386/linux))
..Content-Length: 0.... # U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... # U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... # U 10.10.10.5:53667 -> 10.10.10.49:5060 ACK sip:6609@10.10.10.49:5060 SIP/2.0..Via: SIP/2.0/UDP
10.10.10.5:5060..From: sip:6502188884@10.10.10.5;
tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=b27e1a1d33761e85846fc98f5f3a7e58.c9a7..Date: Mon, 01 Mar 199
3 22:22:15 GMT..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..Max-Forwards: 6..Content-Length: 0..
CSeq: 101 ACK.... # U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... ### U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... ##### U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... ########### U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... ########### U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... ######## U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... ###### U 10.10.10.49:5060 -> 10.10.10.5:5060 SIP/2.0 486 ..Via: SIP/2.0/UDP 10.10.10.5:5060..Record-Route:
sip:6609@10.10.10.49;ftag=4CCDE44-B57;lr..F
rom: sip:6502188884@10.10.10.5;tag=4CCDE44-B57..To:
sip:6609@10.10.10.49;tag=c02cab98-902a-cad0-7e53-089
24feebae5..Call-ID:
A74AE3D-15AA11CC-8071812E-8BB375E1@10.10.10.5..CSeq: 101 INVITE..User-Agent: Grandstream
SIP UA 1.0.3.81..Content-Length: 0.... ############################exit _______________________________________________ Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
-- Jiri Kuthan http://iptel.org/~jiri/