yes you are right:)
but the stange situation is the following
(version from svn):
UA1 SIPProxy
| |
|INVITE 3 |
|------------->|
| |
|407 3 |
|<-------------|
| |
|ACK 3 |
|------------->|
| |
|INVITE 4 |
|------------->|
| |
|TRYING 4 |
|<-------------|
| |
|INVITE 4 |
|<-------------|
| |
|ACK 3 |
|------------->|
| |
|INVITE 4 |
|<-------------|
| |
after the end of dialog related to cseq 3
ua (sipsak) sends an invite (with cseq 4) to sipproxy
then there is the provisional response trying and sipproxy sends invite
further (actually the same ua) to sipsak
and the reaction of sipsak is: ACK with with cseq 3 instead of OK or 4xx,
this scenarion is repeated until sipproxy sends the 408 timeout with cseq 4
after wich ua (sipsak) resposes with ACK with cseq 4
what do you think about this?:)
bests tomek
---- Wiadomość Oryginalna ----
Od: Michal Matyska <michal(a)iptel.org>
Do: serusers(a)lists.iptel.org
Data: 11 grudnia 2006 20:59
Temat: Re: [Serusers] SIPSAK - wrong behaviour??
> I was just curious, so I took look on the ngrep....
>
> there is short jump in the description between points 2 and 3....
> 2a. sipsak sends ACK upon 407 reply, which is 100% correct
> 2b. sipsak resends INVITE with correct credentials
> 2c. ser forwards the INVITE to the sipsak @ port 5060
> 3. sipsak sends ACK (with the CSeq: 3, Via: headers look like
> combination of original ACK and passed INVITE Vias), which you've found
> inappropriate, right? Just to make sure we talk about the same ACK :-D
>
> Michal
>
> On Mon, 2006-12-11 at 19:12 +0100, Nils Ohlmeier wrote:
> > Hi Tomasz,
> >
> > On Monday 11 December 2006 17:21, tzieleniewski wrote:
> > > Hi ALL!
> > > I am trying to run some tests under sipsak but I obtain strange result
> > > I invoke sip stack with the following command:
> > > sipsak -IU -vv -s sip:sipsak@scscf.ims.touk.pl -a sipsak -l 5061 -H
> > > 192.168.0.129 The registration proces runs without any problem, user
> > > registers and then sipsak sends invite to ser. And here comes the strange
> > > thing
> > > 1. sipsak sends invite to ser:
> > > 2. Ser sends the proxy authentication required response 407 (from ngrep)
> > > 3. sipsak receives the message andresponses with the ACK????
> > > Ive placed the ngrep from the sipsak socket in the attached file.
> >
> > that looks like a bug. I'll try to look into that later.
> > It would be great if you could try if the same behavior is still present in
> > the latest version from subversion (let me know if I should send you a
> > tarball of that). And the output from sipsak with -vvv would be a great help.
> > Just send that directly to me.
> >
> > Thanks
> > Nils
> > _______________________________________________
> > Serusers mailing list
> > Serusers(a)lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serusers
>
> _______________________________________________
> Serusers mailing list
> Serusers(a)lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
Hi all,
I am having a situation that every SIP message is being sent twice when
reaching openser. It seems that the message when hits proxy it is processed
twice. I double checked my cfg file, but didn't find anything. Please help
me.
Thanks,
Fernando Freitas.
Hello Hendrik,
I was reading your post and wondering if you have made any progress on SER
monitoring? Especially in regard to enhancing the snmpd to monitor the
number of users and transactions?
http://lists.iptel.org/pipermail/serusers/2006-January/026771.html
Hello Hendrik,
What about VRRP for failover ?
SER1 (master)
sip agents == || === Asterisk Farm==sip/pstn gateway
SER2 (slave)
Harry
--- Hendrik Scholz <hendrik.scholz at freenet-ag.de
<http://lists.iptel.org/mailman/listinfo/serusers> > a
écrit :
> Hi!
>
> hgaillac-sip at yahoo.fr
<http://lists.iptel.org/mailman/listinfo/serusers> wrote:
> > Yes I know about snmp module.
> > There is no way to monitor SER vi snmp !?
>
> As others have noted SER does not directly support
> SNMP but you can
> easily enhance your snmpd to support it.
> You add serctl fifo commands using the snmp exec
> directive
> to monitor the number of users, transactions stuff,
> ...
> The meminfo patch (now included) is handy and you
> can directly pipe
> serctl fifo meminfo into SNMP and create nifty
> graphs.
>
> sipsak comes in handy, i.e. sending an OPTIONS
> request and measuring
> a) if a response comes back and b) the time
> processing took.
>
> Much better would be monitoring INVITE/REGISTER
> response behaviour since
> that usually requires a whole lot more interaction
> (radius, db, ..)
> on SER side.
>
> Hendrik
>
Peter Kuebler
Director Network Reliability
tele: 703-636-1114
ext: 112
tele: 703-734-4112(alt)
cell: 240-506-5703
SunRocket
8045 Leesburg Pike, Suite 300
Vienna, VA 22182
peter.kuebler(a)sunrocket.com
SunRocket NOC 703-637-9970
I am seeing a problem forking more than 7.
Any phones that are beyond the 7th device get 180
ringin but Openser cannot receive the invite to answer
the call.
Any thoughts on why I cannot increase the children?
(BTW, "openserctl ps" shows the proper number of
children. For example, when set to 14, "ps" shows 14
children. However any UA beyond 7 cannot answer the
forked call.)
Thanks, MC
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com
Hello,
Does anyone have a working openser.cfg file that is using the acc module
to log transactions to syslog? If so, can you post it here or email it
to me?
Thanks in advance,
Daniel
Hi there,
I have problem in loading module TM for voicemail setup here.
I use SER 0.9.7 as server and the latest SEMS for voicemail usage.
I tried to add my ser.cfg with script that can handle the voicemail but I found errors when run SER.
Below is my ser.cfg: (Please take a look at line 54 and 56)
debug=9
fork=yes
log_stderror=yes
listen=202.95.149.2 # put your server IP address here
port=5060
children=4
dns=no
rev_dns=no
fifo="/tmp/ser_fifo"
fifo_db_url="mysql://ser:heslo@localhost/ser"
fifo_mode=0666
unix_sock="/tmp/ser_sock"
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/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/uri_db.so"
loadmodule "/usr/local/lib/ser/modules/uri.so"
loadmodule "/usr/local/lib/ser/modules/avp.so"
loadmodule "/usr/local/lib/ser/modules/avpops.so"
loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/permissions.so"
loadmodule "/usr/local/lib/ser/modules/msilo.so"
modparam("auth_db|permissions|uri_db|usrloc","db_url", "mysql://ser:heslo@localhost/ser")
modparam("auth_db|uri_db|usrloc", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")
modparam("nathelper", "natping_interval", 30)
modparam("nathelper", "ping_nated_only", 1)
modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")
modparam("usrloc", "db_mode", 2)
modparam("registrar", "nat_flag", 6)
modparam("rr", "enable_full_lr", 1)
modparam("tm", "fr_inv_timer", 27)
modparam("tm", "fr_inv_timer_avp", "inv_timeout") modparam("tm", "fr_timer", 10 )
modparam("tm", "wt_timer", 10 )
line 54: modparam("tm", "pass_provisional_replies", 1)
# configure tm to append this when tw_appent voicemail_headers is used
line 56: modparam("tm", "tw_append","voicemail_headers:P-Email-Address=avp[$email]")
# appends for dtmf per INFO
modparam( "tm", "tw_append","info_append:hdr[Content-Length];hdr[Content-Type];msg[body]")
modparam("permissions", "db_mode", 1)
modparam("permissions", "trusted_table", "trusted")
modparam("msilo", "db_url", "mysql://ser:heslo@localhost/ser")
modparam("msilo", "db_table", "silo")
modparam("msilo","registrar","sip:registrar@pcr.ac.id")
modparam("msilo","expire_time",259200)
modparam("msilo","check_time",30)
modparam("msilo","clean_period",5)
# configure avpops db connection
modparam( "avpops", "avp_url", "mysql://ser:heslo@localhost/ser" )
modparam( "avpops", "avp_table", "subscriber" )
modparam( "avpops", "uuid_column", "id" )
# configure aliases, the number doesn't matter as long as there are no collisions)
modparam( "avpops", "avp_aliases", "email=i:67" )
# scheme to access the database
modparam( "avpops", "db_scheme",
"email_scheme:table=subscriber;value_col=email_address;value_type=string")
#modparam( "avpops", "db_scheme",
# "language_scheme:table=subscriber;value_col=language;value_type=string")
alias="pcr.ac.id"
route {
# -----------------------------------------------------------------
# Sanity Check Section
# -----------------------------------------------------------------
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483", "Too Many Hops");
break;
};
if (msg:len > max_len) {
sl_send_reply("513", "Message Overflow");
break;
};
/*
if (method != "ACK" && method != "INVITE" && method != "BYE"
&& method != "CANCEL" && method != "INFO" ){
log("unsupported method\n");
sl_send_reply("500","unsupported method");
break;
}
*/
# make transaction
if (!t_newtran()){
log("could not create transaction\n");
sl_send_reply("500","could not create transaction");
break;
}
# actively absorb ACKs
if (method == "ACK") {
t_relay();
break;
}
# pass INFO to SEMS
if (method=="INFO") {
if(!t_write_unix("/tmp/sems_sock","sems/info_append")){
log("could not contact sems\n");
t_reply("500","could not contact media server");
}
}
if (uri =~ "sip:101.*@") {
if (!t_write_unix("/tmp/sems_sock","myapp")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:102.*@") {
if (!t_write_unix("/tmp/sems_sock","myconfigurableapp")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:103.*@") {
if (!t_write_unix("/tmp/sems_sock","myannounceapp")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:104.*@") {
if (!t_write_unix("/tmp/sems_sock","myjukebox")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:105.*@") {
if (!t_write_unix("/tmp/sems_sock","mycc")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:106.*@") {
if (!t_write_unix("/tmp/sems_sock","ivr_announce")){
log("could not contact media server\n");
t_reply("500","could not contact media server");
break;
}
break;
}
############ default sems apps
if (uri =~ "sip:110.*@") {
if (!t_write_unix("/tmp/sems_sock","echo")){
log("could not contact echo\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:111.*@") {
if (!t_write_unix("/tmp/sems_sock","announcement")){
log("could not contact announcement\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:112.*@") {
if (!t_write_unix("/tmp/sems_sock","conference")){
log("could not contact conference\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:113.*@") {
if (!t_write_unix("/tmp/sems_sock","mailbox")){
log("could not contact mailbox\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:114.*@") {
if (!t_write_unix("/tmp/sems_sock","early_announce")){
log("could not contact early_announce\n");
t_reply("500","could not contact media server");
break;
}
break;
}
if (uri =~ "sip:115.*@") {
# load email avp with some email address
avp_write("root@localhost","$email");
# use voicemail_headers append to pass it to sems
if (!t_write_unix("/tmp/sems_sock","voicemail/voicemail_headers")){
log("could not contact voicemail\n");
t_reply("500","could not contact media server");
break;
}
break;
}
t_reply("404","Not found");
# -----------------------------------------------------------------
# Record Route Section
# -----------------------------------------------------------------
if (method!="REGISTER") {
record_route();
};
if (method=="BYE" || method=="CANCEL") {
unforce_rtp_proxy();
}
# -----------------------------------------------------------------
# Loose Route Section
# -----------------------------------------------------------------
if (loose_route()) {
if (has_totag() && (method=="INVITE" || method=="ACK")) {
if (nat_uac_test("19")) {
setflag(6);
force_rport();
fix_nated_contact();
};
force_rtp_proxy("l");
};
route(1);
break;
};
# -----------------------------------------------------------------
# Offline Message Store Section
# -----------------------------------------------------------------
if (is_from_local()) {
if (method=="REGISTER") {
save("location");
log("REGISTER received -> dumping messages with MSILO\n");
# MSILO - dumping user's offline messages
if (m_dump())
{
log("MSILO: offline messages dumped - if they were\n");
}else{
log("MSILO: no offline messages dumped\n");
};
break;
};
# domestic SIP destinations are handled using our USRLOC DB
if(!lookup("location"))
{
if (! t_newtran())
{
sl_reply_error();
break;
};
# we do not care about anything else but MESSAGEs
if (!method=="MESSAGE")
{
if (!t_reply("404", "Not found"))
{
sl_reply_error();
};
break;
};
log("MESSAGE received -> storing using MSILO\n");
# MSILO - storing as offline message
if (m_store("0"))
{
log("MSILO: offline message stored\n");
if (!t_reply("202", "Accepted"))
{
sl_reply_error();
};
}else{
log("MSILO: offline message NOT stored\n");
if (!t_reply("503", "Service Unavailable"))
{
sl_reply_error();
};
};
break;
};
# if the downstream UA does not support MESSAGE requests
# go to failure_route[1]
t_on_failure("1");
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();
};
# -----------------------------------------------------------------
# Call Type Processing Section
# -----------------------------------------------------------------
if (uri!=myself) {
route(5);
route(1);
break;
};
if (uri==myself) {
if (method=="ACK") {
route(6);
break;
} else if (method=="CANCEL") {
route(3);
break;
} else if (method=="INVITE") {
route(3);
break;
} else if (method=="REGISTER") {
route(2);
break;
};
lookup("aliases");
if (uri!=myself) {
route(5);
route(1);
break;
};
if (!lookup("location")) {
sl_send_reply("404", "User Not Found");
break;
};
};
route(1);
}
failure_route[1] {
# forwarding failed -- check if the request was a MESSAGE
if (!method=="MESSAGE")
{
break;
};
log(1,"MSILO:the downstream UA doesn't support MESSAGEs\n");
# we have changed the R-URI with the contact address, ignore it now
if (m_store("1"))
{
log("MSILO: offline message stored\n");
t_reply("202", "Accepted");
}else{
log("MSILO: offline message NOT stored\n");
t_reply("503", "Service Unavailable");
};
}
route[1] {
# -----------------------------------------------------------------
# Default Message Handler
# -----------------------------------------------------------------
t_on_reply("1");
if (!t_relay()) {
if (method=="INVITE" && isflagset(6)) {
unforce_rtp_proxy();
};
sl_reply_error();
};
}
route[2] {
# -----------------------------------------------------------------
# REGISTER Message Handler
# ----------------------------------------------------------------
if (!search("^Contact:\ +\*") && nat_uac_test("19")) {
setflag(6);
fix_nated_register();
force_rport();
};
sl_send_reply("100", "Trying");
if (!www_authorize("pcr.ac.id","subscriber")) {
www_challenge("pcr.ac.id","0");
break;
};
if (!check_to()) {
sl_send_reply("401", "Unauthorized");
break;
};
consume_credentials();
if (!save("location")) {
sl_reply_error();
};
}
route[3] {
# -----------------------------------------------------------------
# CANCEL and INVITE Message Handler
# -----------------------------------------------------------------
if (!allow_trusted() && nat_uac_test("19")) {
setflag(6);
}
lookup("aliases");
if (method=="INVITE" && !allow_trusted())
{
if (!proxy_authorize("pcr.ac.id","subscriber")) {
proxy_challenge("pcr.ac.id","0");
break;
} else if (!check_from()) {
sl_send_reply("403", "Use From=ID");
break;
};
consume_credentials();
};
if (uri=~"^sip:9[0-9]*@") {
route(4);
break;
};
if (uri!=myself) {
route(5);
route(1);
break;
};
if (!lookup("location")) {
if (uri=~"^sip:[0-9]{10}@") {
route(4);
break;
};
sl_send_reply("404", "User Not Found");
break;
};
if (isflagset(6)) {
force_rport();
fix_nated_contact();
force_rtp_proxy();
};
t_on_reply("1");
if (!t_relay()) {
if(isflagset(6)) {
unforce_rtp_proxy();
}
sl_reply_error();
};
}
route[4] {
# -----------------------------------------------------------------
# PSTN Handler
# -----------------------------------------------------------------
rewritehostport("202.95.149.2:5060"); # INSERT YOUR PSTN GATEWAY IP ADDRESS
avp_write("i:45", "inv_timeout");
if (isflagset(6)) {
force_rport();
fix_nated_contact();
force_rtp_proxy();
};
route(1);
}
onreply_route[1] {
if (isflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") {
if (!search("^Content-Length:\ +0")) {
force_rtp_proxy();
};
};
if (nat_uac_test("1")) {
fix_nated_contact();
};
}
--------------------------------------------------------------------------------------------------------------------
If I uncomment line 54 and 56, below is the output when I run SER:
0(4425) set_mod_param_regex: parameter <pass_provisional_replies> not found in module <tm>
0(4425) parse error (54,19-20): Can't set module parameter
0(4425) set_mod_param_regex: tm matches module tm
0(4425) set_mod_param_regex: found <tw_append> in module tm [/usr/local/lib/ser/modules/tm.so]
0(4425) ERROR:tm:parse_tw_append: bad alias spec <$email>
0(4425) parse error (56,19-20): Can't set module parameter
0(4425) set_mod_param_regex: tm matches module tm
-----------------------------------------------------------------------------------------------------------------------
If I comment line 54 and 56, below is the output:
0(0) ERROR:tm:fixup_t_write: unknown append name <voicemail_headers>
0(0) ERROR: fix_expr : fix_actions error
ERROR: error -6 while trying to fix configuration
0(0) MSILO: destroy module ...
0(0) DEBUG: tm_shutdown : start
0(0) DEBUG: unlink_timer_lists : emptying DELETE list
0(0) DEBUG: tm_shutdown : emptying hash table
0(0) DEBUG: tm_shutdown : releasing timers
0(0) DEBUG: tm_shutdown : removing semaphores
0(0) DEBUG: tm_shutdown : destroying tmcb lists
0(0) DEBUG: tm_shutdown : done
0(5050) shm_mem_destroy
0(5050) destroying the shared memory lock
-----------------------------------------------------------------------------------------------------------
Please tell me what's wrong. And please tell me whether if my configuration on ser.cfg is right or wrong because I doubt it.
Thanx before...
Regards,
Meidiana
---------------------------------
Want to start your own business? Learn how on Yahoo! Small Business.
Hi,
I'm trying to use the exported variable $dlg_count (number of active
dialogs) in the configuration script but I get nothing. In the syslog I
see the following error message: "xl_get_spec_value: error - null
sp->itf".
I'm using stable 1.1.0 version.
Any suggestions?
Hello, my name is Matias Rossi and I want to know if it`s possible to record
a call from two "telephones IPs" . So if I have a SER and a call is
established I want to record it conversation with the SER, is that
possible?.
Thanks.
Matias.
--
Rossi Matias Javier ~ Insfostyle
Cel : 15-6397-9708
Nextel: 579*391
Tel./fax : (54) 11 4573-4013
E-mail: matiasrossi(a)infostyle.com.ar
Web: www.infostyle.com.ar
I'm not aware of such publicly available tool. We are using our own to run
iptel.org. (snapshot attached). I think the key point is that the management
data is available to outside world via xml-rpc and folks can relatively
easily bind this data via xml-rpc to their favorite monitoring apps.
If it is as easy as availability monitoring, you can use nagios with
sipsak as plug-in.
-jiri
p.s. this is ser mailing list, which is not openser mailing list. openser
is quite different piece of software.
At 13:28 11/12/2006, Wienand, Joerg wrote:
>Hello,
>
>is there any kind of statistic-support available for OpenSER?
>I would like to have statistics about number of calls, time
>of calls, active users, ...
>
>Is there any tool available, which creates statistics. Pictures
>and diagrams would be nice to have.
>
>
>best regrads
>
>Jörg
>_______________________________________________
>Serusers mailing list
>Serusers(a)lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
--
Jiri Kuthan http://iptel.org/~jiri/
Hello. I'm trying to debug a problem I seem to be having with parallel
forking and I'd like to check my understanding of ser's behavior on a
few points.
I have 2 phone numbers registered in the location table for a certain
subscriber, each with a q value of 1. When I call the subscriber number,
I don't see ser forking and then sending an INVITE to each contact, but
only the one with the lower expiration value (the first number that
"serctl ul show" lists). I have append_branches set to 1 and
desc_time_order set to 0.
The way I've understood everything I've read, lookup() should be laying
the groundwork for the tm module to fork ser so that when I call t_relay
ser will intiate one INVITE to each location with the same q value. Is
this not correct? Is there anything special I should be doing to tell
it to fork an INVITE to each contact at this point?
Thanks, and best regards.
--
= o'shaughnessy_evans -=- sys_admin @ (aloha|ilhawaii|myworld|turquoise).net =
Pacific LightNet, Inc.
"Beware the lollipop of mediocrity. Once you lick it you will suck
forever!" -- Capt. Gladys Stotephamphlet