Hi ,
I tried to call from one nokia sip (E61 and other models )phone to another nokia sip phone. The call works fine. The problem comes only when I call from Phone A to Phone B and then immediately cancel the call(from Phone A). The Phone A will hangup the call as it sent CANCEL but the SER will ignore this CANCEL and still send INVITE to Phone B resulting in a ghost call situation.
I tried to capture a log of message and found that Phone A "CANCEL" message is received on SER even before any provisional response from Phone B. Therefor SER doesnot relay this CANCEL request to Phone B. I even checked RFC which clearly says that UAC should not send CANCEL untill it receives any provisional response. I talked to Nokia expert and they said the 100 Trying message from your server is considered as provisional response, therefor behaviour of client is absolutely correct.
Is there any way I can stop 100 Trying message and still run statefull SER, so that I can verify what nokia said. Any ideas suggestions are welcome.
Thanking you all in advance.
Best Regards,
Abdul Qadir
---------------------------------
Don't be flakey. Get Yahoo! Mail for Mobile and
always stay connected to friends.
Hi,
I am running openser v1.3.1 and I cannot get the RLS module to work properly
when handling a contact list already retrieved from database. Some errors
related with the pua module appear in the log when the server seems to be
trying to generate the subscribe requests for each of the contacts in the
list (see attached, lines 60 to 62).
Apr 10 13:02:23 comm ./openser[20184]: ERROR:pua:subs_build_hdr: getting
event from list
Apr 10 13:02:23 comm ./openser[20184]: ERROR:pua:send_subscribe: while
building extra headers
Apr 10 13:02:23 comm ./openser[20184]: ERROR:rls:process_list_and_exec:
infunction given as a parameter
Those requests are never sent. What could this be due to?
Thanks!
Pablo
Hi everybody,
I have some problems to get presence information exchanged between SIP users
and xmpp ones. SIP clients (X-Lite) depend on an openser server v1.3.1, with
all necessary modules working within it, and xmpp clients (Psi) rely on an
xmpp server (ejabberd) which is in the same machine.
The link between both sip and xmpp servers is established when openser
starts, and the exchange of instant messages between sip and xmpp users
works fine. So does presence too, as long as there are only sip users or
only xmpp users involved, but it does not work between the two worlds in
any direction. Moreover, I do not see any packet being exchanged between the
sip and the xmpp servers when a user from one domain subscribe to one from
the other, or when they change their status.
I dont know what the problem can be. No errors appear in the log and I
thought adding xmpp presence to openser would be straightforward once the IM
was already working.
Openser config file and part of the log file (the subscription to an xmpp
user) are attached. Hope someone can give me some clue.
Thanks in advance!
Paul
I have openser-1.3.1-notls installed although am unable to start
openser. Any suggestions/ideas regarding the below error? Any existing
docs/links would be great.
Thanks
///
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.138.86.56
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.138.87.100
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.37.129.2
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.211.55.2
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.138.86.56
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.138.87.100
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.37.129.2
Mar 20 08:59:14 [18124] WARNING:core:fix_socket_list: could not rev.
resolve 10.211.55.2
Listening on
udp: 127.0.0.1 [127.0.0.1]:5060
udp: 10.138.86.56 [10.138.86.56]:5060
udp: 10.138.87.100 [10.138.87.100]:5060
udp: 10.37.129.2 [10.37.129.2]:5060
udp: 10.211.55.2 [10.211.55.2]:5060
tcp: 127.0.0.1 [127.0.0.1]:5060
tcp: 10.138.86.56 [10.138.86.56]:5060
tcp: 10.138.87.100 [10.138.87.100]:5060
tcp: 10.37.129.2 [10.37.129.2]:5060
tcp: 10.211.55.2 [10.211.55.2]:5060
Aliases:
tcp: my.machine.name:5060
udp: my.machine.name:5060
Mar 20 08:59:14 [18124] WARNING:core:main: no fork mode and more than
one listen address found(will use only the first one)
Mar 20 08:59:14 [18124] INFO:core:init_tcp: using kqueue as the TCP io
watch method (auto detected)
Mar 20 08:59:14 [18124] NOTICE:core:main: version: openser 1.3.1-notls
(i386/darwin)
Mar 20 08:59:14 [18124] INFO:core:main: using 32 Mb shared memory
Mar 20 08:59:14 [18124] INFO:core:main: using 1 Mb private memory per
process
Mar 20 08:59:14 [18124] INFO:sl:mod_init: Initializing StateLess engine
Mar 20 08:59:14 [18124] INFO:tm:mod_init: TM - initializing...
Mar 20 08:59:14 [18124] CRITICAL:tm:uac_init: null socket list
Mar 20 08:59:14 [18124] ERROR:tm:mod_init: uac_init failed
Mar 20 08:59:14 [18124] ERROR:core:init_mod: failed to initialize module tm
Mar 20 08:59:14 [18124] ERROR:core:main: error while initializing modules
Hi guys,
I'm trying to set up a SER server between 2 asterisk machines. I run
into 2 issues.
Whenever I call someone I don't get any ringback tone even so the call
initiating asterisk machine gets the 180 message after 100.
<--- SIP read from 10.4.1.80:5060 --->
SIP/2.0 100 trying -- your call is important to us
Via: SIP/2.0/UDP 10.4.1.80:5060;branch=z9hG4bK2729bab8;rport=5060
From: "Thorsten" <sip:1000@82.98.89.134>;tag=as4c964973
To: <sip:017683035400@10.4.1.80>
Call-ID: 5e209fbb7ebdbad97f0193515c5a2982(a)82.98.89.134
CSeq: 102 INVITE
Server: Sip EXpress router (0.9.7 (i386/linux))
Content-Length: 0
Warning: 392 10.4.1.80:5060 "Noisy feedback tells: pid=459
req_src_ip=82.98.89.134 req_src_port=5060
in_uri=sip:017683035400@10.4.1.80
out_uri=sip:017683035400@192.168.13.102:5060 via_cnt==1"
<------------->
--- (9 headers 0 lines) ---
mg03*CLI>
<--- SIP read from 10.4.1.80:5060 --->
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 10.4.1.80:5060;branch=z9hG4bK2729bab8;rport=5060
From: "Thorsten" <sip:1000@82.98.89.134>;tag=as4c964973
To: <sip:017683035400@10.4.1.80>;tag=59cea6e4c6ca71e2f82c9c3c8b464af6.bec2
Call-ID: 5e209fbb7ebdbad97f0193515c5a2982(a)82.98.89.134
CSeq: 102 INVITE
Server: Sip EXpress router (0.9.7 (i386/linux))
Content-Length: 0
Warning: 392 10.4.1.80:5060 "Noisy feedback tells: pid=459
req_src_ip=82.98.89.134 req_src_port=5060
in_uri=sip:017683035400@10.4.1.80
out_uri=sip:017683035400@192.168.13.102:5060 via_cnt==1
On SER I've configured to send this message:
if (method=="INVITE") {
if (uri =~ "sip:0[0-9]@*") {
route(3);
sl_send_reply("180", "Ringing");
break;
}
};
The other issue is that I don't see the caller id on the receiver side.
I don't know if it is a asterisk or a SER issue. Only if I set the
caller id on asterisk manual in extensions.conf with
exten => _X.,1,Set(CALLERID(num)=06965006100)
I'll see the caller id on the receiver side.
I would really appreciate any help
Thanks
Thorsten
hello,
i have problem with msilo module, actually with retrieving offline
messages. messages for offline users are stored in mysql, but when they
register I get
--------------------------------------------------------
0(18729) ERROR: parse_uri: uri too short: <> (0)
0(18729) ERROR: uri2dst: bad_uri:
0(18729) t_uac: no socket found
--------------------------------------------------------
I found that's the same error for storing offline messages but not
retrieving them ->
http://lists.iptel.org/pipermail/serusers/2007-May/032978.html
will applying patch do any good?
p.s. my config is in attachment
--
srdacan pozdrav/regards,
Valentin
------------------------------------------------
Valentin Rosic
SRCE - Sveucilisni racunski centar
J. Marohnica 5, 10000 Zagreb, Croatia
email: valentin.rosic @ srce.hr
web: http://www.srce.hr
tel: +385/1/6165 303
fax: +385/1/6165 559
------------------------------------------------
#
# $Id: ser.cfg,v 1.36.2.3 2007/03/08 10:51:45 calrissian Exp $
#
# First start SER sample config script with:
# database, accounting, authentication, multi-domain support
# PSTN GW section, named flags, named routes, global-,
# domain- and user-preferences with AVPs
# Several of these features are only here for demonstration purpose
# what can be achieved with the SER config script language.
#
# If you look for a simpler version with a lot less dependencies
# please refer to the ser-basic.cfg file in your SER distribution.
# To get this config running you need to execute the following commands
# with the new serctl (the capital word are just place holders)
# - ser_ctl domain add DOMAINNAME
# - ser_ctl user add USERNAME@DOMAINNAME -p PASSWORD
# If you want to have PID header for your user
# - ser_attr add uid=UID asserted_id="PID"
# If you want to have gateway support
# - ser_db add attr_types name=gw_ip rich_type=string raw_type=2 description="The gateway IP for the default ser.cfg" default_flags=33
# - ser_attr add global gw_ip=GATEWAY-IP
# ----------- global configuration parameters ------------------------
debug=3 # debug level (cmd line: -dddddddddd)
#memdbg=10 # memory debug log level
#memlog=10 # memory statistics log level
#log_facility=LOG_LOCAL0 # sets the facility used for logging (see syslog(3))
# Uncomment these lines to enter debugging mode
fork=no
log_stderror=yes
alias="161.53.2.236"
alias="srce.hr"
alias="xyz.hr"
alias="aurora.srce.hr"
alias="161.53.0.162"
listen=161.53.2.236
check_via=no # (cmd. line: -v)
dns=no # (cmd. line: -r)
rev_dns=no # (cmd. line: -R)
port=5060
#children=4
#user=ser
#group=ser
#disable_core=yes #disables core dumping
#open_fd_limit=1024 # sets the open file descriptors limit
#mhomed=yes # usefull for multihomed hosts, small performance penalty
#disable_tcp=yes
#tcp_accept_aliases=yes # accepts the tcp alias via option (see NEWS)
#
# ------------------ module loading ----------------------------------
# load a SQL database for authentication, domains, user AVPs etc.
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/xlog.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/ctl.so"
loadmodule "/usr/local/lib/ser/modules/fifo.so"
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
loadmodule "/usr/local/lib/ser/modules/gflags.so"
loadmodule "/usr/local/lib/ser/modules/domain.so"
loadmodule "/usr/local/lib/ser/modules/uri_db.so"
loadmodule "/usr/local/lib/ser/modules/avp.so"
loadmodule "/usr/local/lib/ser/modules/avp_db.so"
loadmodule "/usr/local/lib/ser/modules/acc_db.so"
loadmodule "/usr/local/lib/ser/modules/xmlrpc.so"
loadmodule "/usr/local/lib/ser/modules/msilo.so"
# ----------------- setting script FLAGS -----------------------------
flags
FLAG_ACC : 1 # include message in accouting
avpflags
dialog_cookie; # handled by rr module
# ----------------- setting module-specific parameters ---------------
# specify the path to you database here
modparam("acc_db|auth_db|avp_db|domain|gflags|usrloc|uri_db|msilo", "db_url", "mysql://ser:heslo@127.0.0.1/ser")
# -- usrloc params --
# as we use the database anyway we will use it for usrloc as well
modparam("usrloc", "db_mode", 1)
# -- auth params --
modparam("auth_db", "calculate_ha1", yes)
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)
#
# limit the length of the AVP cookie to only necessary ones
modparam("rr", "cookie_filter", "(account)")
#
# you probably do not want that someone can simply read and change
# the AVP cookie in your Routes, thus should really change this
# secret value below
modparam("rr", "cookie_secret", "MyRRAVPcookiesecret")
# -- gflags params --
# load the global AVPs
modparam("gflags", "load_global_attrs", 1)
# -- domain params --
# load the domain AVPs
modparam("domain", "load_domain_attrs", 1)
# -- ctl params --
# by default ctl listens on unixs:/tmp/ser_ctl if no other address is
# specified in modparams; this is also the default for sercmd
modparam("ctl", "binrpc", "unixs:/tmp/ser_ctl")
# listen on the "standard" fifo for backward compatibility
modparam("ctl", "fifo", "fifo:/tmp/ser_fifo")
# listen on tcp, localhost
#modparam("ctl", "binrpc", "tcp:localhost:2046")
# -- acc_db params --
# failed transactions (=negative responses) should be logged to
modparam("acc_db", "failed_transactions", 1)
# comment the next line if you dont want to have accouting to DB
modparam("acc_db", "log_flag", "FLAG_ACC")
# -- tm params --
# uncomment the following line if you want to avoid that each new reply
# restarts the resend timer (see INBOUND route below)
#modparam("tm", "restart_fr_on_each_reply", "0")
# -- xmlrpc params --
# using a sub-route from the module is a lot safer then relying on the
# request method to distinguish HTTP from SIP
modparam("xmlrpc", "route", "RPC");
#modparam("tm", "fr_timer", 10 )
#modparam("tm", "fr_inv_timer", 15 )
#modparam("tm", "wt_timer", 10 )
#modparam("msilo", "expire_time", 86400) # 1 day
modparam("msilo", "expire_time", 120) # 120 sec
modparam("msilo", "registrar", "sip:registrar@srce.hr")
modparam("msilo", "check_time", 10)
modparam("msilo", "clean_period", 3)
modparam("msilo", "use_contact", 1)
# ------------------------- request routing logic -------------------
# main routing logic
route{
# if you have a PSTN gateway just un-comment the follwoing line and
# specify the IP address of it to route calls to it
#$gw_ip = "1.2.3.4"
# first do some initial sanity checks
route(INIT);
# check if the request is routed via Route header or
# needs a Record-Route header
route(RR);
# check if the request belongs to our proxy
route(DOMAIN);
# handle REGISTER requests
route(REGISTRAR);
# from here on we want to know you is calling
route(AUTHENTICATION);
# check if we should be outbound proxy for a local user
route(OUTBOUND);
# check if the request is for a local user
route(INBOUND);
# here you could for example try to do an ENUM lookup before
# the call gets routed to the PSTN
#route(ENUM);
# lets see if someone wants to call a PSTN number
route(PSTN);
# nothing matched, reject it finally
sl_reply("404", "No route matched");
}
route[FORWARD]
{
# if the downstream UA does not support MESSAGE requests
# go to failure_route[1]
if (method=="MESSAGE") {
t_on_failure("MESSAGE");
}
# here you could decide wether this call needs a RTP relay or not
log(1, "LOG: usao u FORWARD rutu \n");
# send it out now; use stateful forwarding as it works reliably
# even for UDP2TCP
if (!t_relay()) {
sl_reply_error();
}
drop;
}
route[INIT]
{
log(1, "LOG: usao INIT \n");
# initial sanity checks -- messages with
# max_forwards==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_reply("483","Too Many Hops");
drop;
}
if (msg:len >= max_len ) {
sl_reply("513", "Message too big");
drop;
}
# you could add some NAT detection here for example
# or you cuold call here some of the check from the sanity module
# lets account all initial INVITEs
# further in-dialog requests are accounted by a RR cookie (see below)
if (method=="INVITE" || method=="BYE") {
log(1, "LOG: usao u INVITE u INIT ruti ACC \n");
setflag(FLAG_ACC);
}
}
route[RPC]
{
# allow XMLRPC from localhost
if ((method=="POST" || method=="GET") &&
src_ip==127.0.0.1) {
if (msg:len >= 8192) {
sl_reply("513", "Request to big");
drop;
}
# lets see if a module wants to answer this
dispatch_rpc();
drop;
}
}
route[RR]
{
# subsequent messages withing a dialog should take the
# path determined by record-routing
log(1, "LOG: usao u Record rutu (RR) \n");
if (loose_route()) {
log(1, "LOG: usao u RR - Loose root funkcija \n");
# mark routing logic in request
append_hf("P-hint: rr-enforced\r\n");
# if the Route contained the accounting AVP cookie we
# set the accounting flag for the acc_db module.
# this is more for demonstration purpose as this could
# also be solved without RR cookies.
# Note: this means all in-dialog request will show up in the
# accouting tables, so prepare your accounting software for this ;-)
if ($account == "yes") {
setflag(FLAG_ACC);
}
# for broken devices which overwrite their Route's with each
# (not present) RR from within dialog requests it is better
# to repeat the RRing
# and if we call rr after loose_route the AVP cookies are restored
# automatically :)
record_route();
route(FORWARD);
} else if (!method=="REGISTER") {
log("1, LOG: usao u RR- REGISTER funkcija \n");
# 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
# if the inital INVITE got the ACC flag store this in
# an RR AVP cookie. this is more for demonstration purpose
if (isflagset(FLAG_ACC)) {
$account = "yes";
setavpflag($account, "dialog_cookie");
}
record_route();
}
}
route[DOMAIN]
{
log("LOG: usao u DOMAIN rutu \n");
# check if the caller is from a local domain
lookup_domain("$fd", "@from.uri.host");
# check if the callee is at a local domain
lookup_domain("$td", "@ruri.host");
# we dont know the domain of the caller and also not
# the domain of the callee -> somone uses our proxy as
# a relay
if (!$t.did && !$f.did) {
sl_reply("403", "Relaying Forbidden");
drop;
}
}
route[REGISTRAR]
{
xlog("L_ERR","usao u REGISTRAR rutu\n");
# if the request is a REGISTER lets take care of it
if (method=="REGISTER") {
xlog("L_ERR", "usao u REGISTER metodu u REGISTRAR routi \n");
# check if the REGISTER if for one of our local domains
if (!$t.did) {
sl_reply("403", "Register forwarding forbidden");
drop;
}
# we want only authenticated users to be registered
if (!www_authenticate("$fd.digest_realm", "credentials")) {
xlog("L_ERR", "usao u www authenticate funkciju u REGISTRAR routi \n");
if ($? == -2) {
sl_reply("500", "Internal Server Error");
} else if ($? == -3) {
sl_reply("400", "Bad Request");
} else {
if ($digest_challenge) {
append_to_reply("%$digest_challenge");
}
sl_reply("401", "Unauthorized");
}
drop;
}
# check if the authenticated user is the same as the target user
if (!lookup_user("$tu.uid", "@to.uri")) {
xlog("L_ERR", "usao u !lookup_user funkciju u REGISTRAR routi \n");
sl_reply("404", "Unknown user in To");
drop;
}
if ($f.uid != $t.uid) {
sl_reply("403", "Authentication and To-Header mismatch");
drop;
}
# check if the authenticated user is the same as the request originator
# you may uncomment it if you care, what uri is in From header
#if (!lookup_user("$fu.uid", "@from.uri")) {
# sl_reply("404", "Unknown user in From");
# drop;
#}
#if ($fu.uid != $tu.uid) {
# sl_reply("403", "Authentication and From-Header mismatch");
# drop;
#}
# everyhting is fine so lets store the binding
if (!save_contacts("location")) {
xlog("L_ERR", "usao u !save_contacts funkciju u REGISTRAR routi \n");
sl_reply("400", "Invalid REGISTER Request");
drop;
}
# MSILO - dumping user's offline messages
if (m_dump("")) {
xlog("L_DBG", "MSILO: offline messages dumped - if they were\n");
}
else {
xlog("L_DBG", "MSILO: no offline messages dumped\n");
};
drop;
}
}
route[AUTHENTICATION]
{
if (method=="CANCEL" || method=="ACK") {
# you are not allowed to challenge these methods
break;
}
# requests from non-local to local domains should be permitted
# remove this if you want a walled garden
if (! $f.did) {
break;
}
# as gateways are usually not able to authenticate for their
# requests you will have trust them base on some other information
# like the source IP address. WARNING: if at all this is only safe
# in a local network!!!
#if (src_ip==a.b.c.d) {
# break;
#}
if (!proxy_authenticate("$fd.digest_realm", "credentials")) {
if ($? == -2) {
sl_reply("500", "Internal Server Error");
} else if ($? == -3) {
sl_reply("400", "Bad Request");
} else {
if ($digest_challenge) {
append_to_reply("%$digest_challenge");
}
sl_reply("407", "Proxy Authentication Required");
}
drop;
}
# check if the UID from the authentication meets the From header
$authuid = $uid;
if (!lookup_user("$fu.uid", "@from.uri")) {
del_attr("$uid");
}
if ($fu.uid != $fr.authuid) {
sl_reply("403", "Fake Identity");
drop;
}
# load the user AVPs (preferences) of the caller, e.g. for RPID header
load_attrs("$fu", "$f.uid");
}
route[OUTBOUND]
{
# if a local user calls to a foreign domain we play outbound proxy for him
# comment this out if you want a walled garden
if ($f.did && ! $t.did) {
append_hf("P-hint: outbound\r\n");
route(FORWARD);
}
}
route[INBOUND]
{
# lets see if know the callee
if (lookup_user("$tu.uid", "@ruri")) {
# load the preferences of the callee to have his timeout values loaded
load_attrs("$tu", "$t.uid");
# if you want to know if the callee username was an alias
# check it like this
#if (! $tu.uri_canonical) {
# if the alias URI has different AVPs/preferences
# you can load them into the URI track like this
#load_attrs("$tr", "@ruri");
#}
# native SIP destinations are handled using our USRLOC DB
if (lookup_contacts("location")) {
append_hf("P-hint: usrloc applied\r\n");
# we set the TM module timers according to the prefences
# of the callee (avoid too long ringing of his phones)
# Note1: timer values have to be in ms now!
# Note2: this makes even more sense if you switch to a voicemail
# in a FAILURE route
if ($t.fr_inv_timer) {
if ($t.fr_timer) {
t_set_fr("$t.fr_inv_timer", "$t.fr_timer");
} else {
t_set_fr("$t.fr_inv_timer");
}
}
route(FORWARD);
} else {
# User is offline
# we care about MESSAGEs
if (method == "MESSAGE") {
if (!t_newtran()) {
sl_reply_error();
break;
}
# store only text messages NOT isComposing... !
if (search("^(Content-Type|c):.*application/im-iscomposing\+xml.*")) {
t_reply("202", "Ignored");
break;
}
xlog("L_NOTICE", "MESSAGE received -> storing using MSILO\n");
# MSILO - storing as offline message
if (m_store("0","")) {
xlog("L_NOTICE", "MSILO: offline message stored\n");
if (!t_reply("202", "Accepted")) {
sl_reply_error();
};
}
else {
xlog("L_NOTICE", "MSILO: offline message NOT stored\n");
if (!t_reply("503", "Service Unavailable")) {
sl_reply_error();
};
};
drop;
}
xlog("L_NOTICE","route[INBOUND] 480 User Offline");
sl_reply("480", "User Offline");
drop;
}
}
}
route[PSTN]
{
# Only if the AVP 'gw_ip' is set and the request URI contains
# only a number we consider sending this to the PSTN GW.
# Only users from a local domain are permitted to make calls.
# Additionally you might want to check the acl AVP to verify
# that the user is allowed to make such expensives calls.
if ($f.did && $gw_ip &&
uri=~"sips?:\+?[0-9]{3,18}@.*") {
# probably you need to convert the number in the request
# URI according to the requirements of your gateway here
# if an AVP 'asserted_id' is set we insert an RPID header
if ($asserted_id) {
xlset_attr("$rpidheader", "<sip:%$asserted_id@%@ruri.host>;screen=yes");
replace_attr_hf("Remote-Party-ID", "$rpidheader");
}
# just replace the domain part of the RURI with the
# value from the AVP and send it out
attr2uri("$gw_ip", "domain");
route(FORWARD);
}
}
failure_route[MESSAGE]
{
xlog("L_ERR", "failure route MESSAGE\n");
# forwarding failed -- check if the request was a MESSAGE
if (method == "MESSAGE") {
xlog("L_NOTICE", "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("0","")) {
xlog("L_NOTICE", "MSILO: offline message stored\n");
t_reply("202", "Accepted");
}
else {
xlog("L_NOTICE", "MSILO: offline message NOT stored\n");
t_reply("503", "Service Unavailable");
}
}
}
Hello,
Iam New to this List and OpenSER...
Does anyone has set up the CDR Tool?
We set this up in 6.4.1 and have the Problem that we are not able to create
a billing user. We did not found anything regarding the soap/xml.
Is it Possible to get a documentation or a example user?
Thank you
Wolfgang
Hello,
does anyone has set up the CDR Tool?
We set this up in 6.4.1 and have the Problem that we are not able to create
a billing user. We did not found anything regarding the soap/xml
Is it Possible to get a documentation or a example user?
Thank you
Wolfgang
Wolfgang Uelpenich
WU-Solutions Ltd. & CO Kommanditgesellschaft
Schnitterweg 2
65375 Oestrich-Winkel
Mail: <mailto:wu@wu-solutions.com> wu(a)wu-solutions.com
Web:
<file:///C:\Dokumente%20und%20Einstellungen\wolfgang\Anwendungsdaten\Microso
ft\Signatures\www.wu-solutions.com> <http://www.wu-solutions.com/>
www.wu-solutions.com
Tel: +49-6723-6298000
Fax: +49-6723-9081709
Amtsgericht Wiesbaden * HRA8736
Geschäftsleitung: Wolfgang Uelpenich
Dear
I am searching to find a config file, for registering
user via database and nat traversal(rtpproxy or
mediaproxy)
please help me , to find the best
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ