Hi all,
I add a new column named "client" in subscriber table.
Next, I want to do a test wich seems like that in SQL :
"SELECT client FROM subscriber WHERE username = "actual calling number"
=> equivalent of avp_db_load I think ?
Then, I think I must do a test on the previous values with an if and
avp_check I think.
But my problem is to do this both requests with SER syntax in ser.cfg.
Someone can help me ?
Thanks
I try to fork a call to another user registered at the same proxy as the
caller. I figured out that the easiest method would be to use the
append_branch() function, something like
route[0] {
if (method=="REGISTER") { save("location"); exit; }
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
exit;
}
# if someone calls test2@domain, fork call to test4@domain
# (test2 and test4 are both registered at domain)
if (avp_check("$rU", "eq/test2")) {
append_branch("sip:test4@127.0.0.1");
}
if (!t_relay()) {
sl_reply_error();
};
exit;
}
I know that this could also be achieved by adding permanent location
records, but I'd like to load the forking targets from a DB in the
future. So my first question would be if using
append_branch("sip:test4@127.0.0.1");
is the correct way to do parallel forking to a local user.
I'm asking because this method does not work for me as expected. It
seems that the two UAC state machines running on the same proxy host
that are involved in a forking call do somehow not work well together.
Forking the INVITE to both test2 and test4 works well, but when I pick
up test2 the call gets terminated after a few seconds. Further
investigations have revealed that canceling the second call leg does not
work correctly. There is a message flow diagram available at
http://www.unc.edu/~cschlatt/openser.html .
For some reason, the proxy process sending from 127.0.0.1 is
retransmitting the 487 "Request Terminated" although it receives ACKs
from the upstream proxy. And this causes the upstream proxy to send a
487 back to the caller (time 15.360), which then terminates the call
established between caller and test2.
And this only happens if I fork to the same proxy, if I use two proxy
hosts everything works fine (??).
Any advice is highly appreciated,
Christian
Hi Juha,
Thanks for your reply.
First prominent doubt that I have is; when I am using LCR in db_only mode why does openser try to load the table while starting up?
The scenario is as follows:
I had 50 rows in LCR table and started openser and it started properly and also routed the calls properly according to the values in lcr and gw table. Now I just appended more 40,000 rows to this table and again the routing worked properly
as per my lcr table. This behaviour was correct as I was using query only mode. I did not need any restart or any fifo reload command.
Only when I restarted my openser, the openser again died as it was trying load the lcr table while starting.
Could this be a bug in lcr module as I am not sure whats happening.
I tried increasing MAX_NO_OF_LCRS but even that did not help.
Somebody please help if poosible.
Thanks,
w/regards,
jayesh
----- Original Message ----
From: Juha Heinanen <jh(a)tutpro.com>
To: Jayesh Nambiar <voip_freak(a)yahoo.co.in>
Cc: openser <users(a)openser.org>
Sent: Tuesday, 26 December, 2006 10:58:01 PM
Subject: [Users] LCR db_only mode problem
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
the error messages you get are coming from this statement:
if (lcr_dbf.query(dbh, NULL, 0, NULL, lcr_cols, 0, 4, 0, &res) < 0) {
LOG(L_ERR, "lcr_reload_gws(): Failed to query lcr data\n");
lcr_dbf.close(dbh);
return -1;
}
i don't know which kind of memory db queries reserve. if shared memory,
you can start openser with larger -m parameter value. if pkg memory,
you need to edit PKG_MEM_POOL_SIZE in config.h and recompile openser.
with lots of lcr entries and no caching, performance may be bad.
if you use caching then you need to increase value of
#define MAX_NO_OF_LCRS 256
in lcr_mod.c and recompile lcr module. increasing MAX_NO_OF_LCRS means
that more shared memory will be used so you may also need to start
openser with larger -m parameter value.
-- juha
Send free SMS to your Friends on Mobile from your Yahoo! Messenger. Download Now! http://messenger.yahoo.com/download.php
Hi all,
Merry Xmas !
I'm just a small question if some people are still working :-)
I try to make a load balancing solution with SER and Asterisk.
I use the dispatcher module and I set on asterisks servers the default
gw as SER.
All requests go through the SER to the asterisks and on the SER I'm have
a line like
If source-ip = Asterisk source IP do ...
And I want to do something like forward to the TO FIELD ...
Do you know how can I do this ?
Thanks a lot for your help,
Thomas
Hello all,
I'm trying to use a SER server for the following:
|
| | |
ISP #1 ISP #2 Private Link
Private LINK
NATed SIP SIP Clients 172.18.xxx.yyy
172.16.5.xx
Clients |
| |
|
| | |
| |
| |
----------------------------------------------------------------------------------------------------
|
----------------------------------------------------------------
SER with MEDIAPROXY
----------------------------------------------------------------
|
|
|
================
Asterisk (172.16.5.1)
=================
|
|
PSTN
I need asterisk to handle all the calls to the PSTN and event the SIP
calls between them. I need to use the SER server as a tool to receive
calls from any of the environments that I draw on top, and all
communicating with Asterisk, even I also have a backup Asterisk box,
that I can use in load balance with SER.
I saw that there is a function "rewritehostport()" which I'm pretty sure
it won't work since I will not keep the call in the SER server. I have
made the NAT configuration of the Getting Started Guide, but I now that
this is just part of what I need to build the complete solution.
Can anyone please give me a hint in what is that I need to acomplish
such task
Thanks in advance
Gerardo Amaya
I recently installed the latest version of openser and this time used
mediaproxy rather than rtpproxy. Everything seems to work but if a sip
device is called the phone rings and is instantally disconnected and the far
end is left off-hook. This worked before but I did modify my script to work
with mediaproxy. Below is the wireshark decode of the sip messagining. Any
help or suggestions on where to look would be great. Calls from the sip
device works flawlessly. I am using a MaxTNT as the gateway.
|Time | 152.93.36.91 | siprt1.me.net| 152.93.37.83 |
|22.031 | INVITE SDP ( telephone-event) |
|SIP From: sip:8385021101@152.53.16.91:5060 To:sip: 8385024200@
siprt1.me.net:5060
| |(5060) ------------------> (5060) | |
|22.031 | 100 Giving a try | |SIP
Status
| |(5060) <------------------ (5060) | |
|22.031 | | INVITE SDP ( telephone-event)
|SIP Request
| | |(5060) ------------------> (5060) |
|22.040 | | 100 Trying| |SIP
Status
| | |(5060) <------------------ (5060) |
|22.042 | | 180 Ringing |SIP
Status
| | |(5060) <------------------ (5060) |
|22.042 | 180 Ringing | |SIP
Status
| |(5060) <------------------ (5060) | |
|25.244 | | 200 OK SDP ( telephone-event)
|SIP Status
| | |(5060) <------------------ (5060) |
|25.245 | 200 OK SDP ( telephone-event) |
|SIP Status
| |(5060) <------------------ (5060) | |
|25.269 | ACK | | |SIP
Request
| |(5060) ------------------> (5060) | |
|25.269 | | ACK | |SIP
Request
| | |(5060) ------------------> (5060) |
|25.269 | INVITE SDP ( telephone-event) |
|SIP From: sip: 8385021101@152.93.36.91:5060 To:sip: 8385024200@
siprt1.me.net:5060
| |(5060) ------------------> (5060) | |
|25.270 | 407 Proxy Authentication Required |
|SIP Status
| |(5060) <------------------ (5060) | |
|25.291 | ACK | | |SIP
Request
| |(5060) ------------------> (5060) | |
|25.291 | BYE | | |SIP
Request
| |(5060) ------------------> (5060) | |
|25.293 | | BYE | |SIP
Request
| | |(5060) ------------------> (5060) |
|25.326 | | 200 OK | |SIP
Status
| | |(5060) <------------------ (5060) |
|25.327 | 200 OK | | |SIP
Status
| |(5060) <------------------ (5060) | |
Shane
Hi!
I read the docs of the presence module and have some question. Maybe
someone can enlighten me ;-)
1. If I understand correctly, the pua module acts as a "UAC". Thus, it can
be used to send PUBLISH or SUBSCRIBE. I wonder what is the usecase for
sending SUBSCRIBE? Usually, a client which sends a SUBSCRIBE receives
subsequent NOTIFY messages. How can these NOTIFY messages be handled?
2. If an external application sends PUBLISH via the uac_mi interface, how
can be distinguished between a "new" PUBLISH or an "update" PUBLISH? For
example if the MI interface returns the E-Tag from the 200 Ok response
this could be used in the next request to group identify PUBLISH reqeusts
which belong together.
3. There is a bug in the pua module docs: the db_url(str) parameter is
described twice.
4. The following module documentations lack of default values for the
module parameters: pua, pua_usrloc, presence (maybe some example show the
default value, but IMO the default value should be explicitely stated)
5. How can I update the presence status from a third party application? Is
it possible to write directly into the tables of the presence modules?
Or can I fake an update using the pua_mi to loop a PUBLISH to itself for
handling it afterwards with handle_publish()? May this cause problems
because it interferes the subsequent PUBLISH request from the client
(etag)?
regards
Klaus
Hi,
I am trying to make my non-TLS/TLS UA register with my TLS enabled openSER.
Currently I am just working on my local machine with the client UAs on the
same subnet,(so there is only one domain, but its not named). Below is my
configuration file:
disable_tls = 0
listen = tls:10.30.100.41:5061
tls_verify_server = 1
tls_verify_client = 0
tls_require_client_certificate = 0
tls_method = TLSv1
tls_certificate = "/usr/local/etc/openser/tls/user/user- cert.pem"
tls_private_key = "/usr/local/etc/openser/tls/user/user- privkey.pem"
tls_ca_list = "usr/local/etc/openser/tls/user/user-calist.pem"
However, with the above configuration the client UAs couldnot register and I
got 408 Request Time out Message. Is there any field that is missing to make
this simple scenario work? What should be the values of "tls_client_domain"
and "tls_server_domain" fields in this case?
I noticed that when I start the openSER without TLS support using
"openserctl start" and do "ps -e" after that, there are more openSER
processes running than if I start openSER with TLS support in which case I
see very few of these processes running.
Your help is much appreciated....
Best regards,
NCheeku
Hello,
I am currently trying to do accurate billing with openser. I found that
dialog and sst modules can be used to determine failed transactions. i.e. If
UA crashed and no BYE received at all. I tried to configure dialog and sst
modules as specified in the documentation. But active dialogs keep
incrementing even after hangup. It would be nice if someone can post a good
example. I am using cvs head of openser.
Snippet of config is as below:
###################### DIALOG ######################
modparam("dialog", "dlg_flag", 13)
modparam("dialog", "timeout_avp", "$avp(i:10)")
modparam("dialog", "use_tight_match", 1)
modparam("dialog", "enable_stats", 1)
###################### SST ######################
modparam("sst", "enable_stats", 1)
modparam("sst", "timeout_avp", "$avp(i:10)")
modparam("sst", "sst_flag", 14)
route
{
........
........
if(method=="INVITE")
{
setflag(13); # set the dialog flag
setflag(14); # Set the sst flag
avp_write("15","$avp(i:10)");
};
if (method=="INVITE")
{
record_route_preset("192.168.1.2:5060;nat=yes;did=1");
};
.........
.........
}
--
Regards
Asterisk Expert
Hi!
What kind of presence does the presence module support? Only the "basic"
presence format PIDF (RFC 3863) or also PIDF extensions like the GEOPRIV
Location Object Format RFC 4119?
Or in other words - is the presence module aware of the XML payload or is
it agnostic to the presence payload?
regards
klaus