the counting and values provided by $hfl and $hflc are wrong and incomplete from my understanding. looking at the source code these pseudo vars count the body values of Via, Record-Route and Route headers.
in kamalio 5.6.1
with
Record-Route: <sip:1.1.1.1;lr=on;nat=yes>
Record-Route: <sip:2.2.2.2:5060;lr;transport=udp>,<sip:3.3.3.3:22506;lr;transport=udp>
i get $hflc(Record-Route) == 2 instead of 3
and $(hfl(Record-Route)[0]) == 1.1.1.1
$(hfl(Record-Route)[1]) == 2.2.2.2
$(hfl(Record-Route)[3]) does not exists.
Hi, I'm using kamailio with Teams like SBC and asterisk.
Works perfectly less one thing. When I make a call asterisk to Teams, in my Teams app I see 3 popup notifications, and 3 calls in my history. If I call Teams to Asterisk, perfect..
When I make an asterisk to Teams call, I get the trace from Asterisk and I can see three 180, I don't know if this is the problem, but are there any way to fix it? Limit to 1 notification?
Thanks
Hello All,
i would to iterate through all ips in Record-Route through @hf_value.Record_Route.
if i put static index like @hf_value.Record_Route[0] it works.
but $var(i) = 0; @hf_value.Record_Route[$var(i)] does not work.
is there a way to get the count of all headers values through @hf_value.Record_Route
For example i would like to iterate through all Record-Route Values if i receive it like this
Record-Route: <sip:1.1.1.1;lr=on;nat=yes>
Record-Route: <sip:2.2.2.2:5060;lr>,<sip:3.3.3.3:22506;lr>
hello,
My name is Fernando Piana from Colombia.
I am writing to you because I am testing Kamailio together with the Siremis
graphical environment.
I was visiting the siremis.org website and also the siremis wiki, but I
couldn't find the administration manual.
>From this medium I want to ask you if you can send me a copy of the Siremis
administration manual.
I await a response.
Thank you very much.
--
Fernando Piana
Ing. Comunicaciones y Bases de Datos
Cel: +57 311 641 7558
Hi,
I was wondering if it is safe from a cache consistency pow to enable usrloc
db_insert_update in a dmq replicated environment, where all registrars
share the same db.
I'm already using the filter option to avoid loading/deletion by server id,
but there's no similar option for writing.
I know that it is possible to use db mode 4 on all registrars (which get
synced by dmq) except one, which will be responsible for writing, but this
creates a little unbalanced setup in addition to performing writes only
from one proxy.
Any hint? Maybe is time to check how to filter writes, too :) ?
Thanks,
Matteo
Hi List
We cache stuff like call forwarding information in a htable cache to
minimizie SQL lookups and have it available via DMQ on all instances.
But of course, if the call forwarding information for a destination
changes in the database, we would like to flush either the whole cache,
or even better, that single entry.
What is the best way to do this?
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hi,
I discovered recently that, on Kamailio 5.5.4 at least, the dialog ’timeout_avp’ no longer appears to have effect.
Here are my (seemingly relevant) dialog parameters:
modparam("dialog", "enable_stats", 0)
modparam("dialog", "hash_size", 4096)
modparam("dialog", "rr_param", "dlgcor") # DLG "correlator"
modparam("dialog", "dlg_flag", 2)
modparam("dialog", "default_timeout", 28800) # 8 hours
modparam("dialog", "dlg_match_mode", 1)
modparam("dialog", "table_name", "dialog")
modparam("dialog", "send_bye", 1)
modparam("dialog", "wait_ack", 0)
modparam(“dialog”, “timeout_avp”, “$avp(dlg_timeout)”)
The flow is roughly like this:
request_route {
...
t_check_trans();
if(is_method(“INVITE”)) {
...
dlg_manage();
$avp(dlg_timeout) = 10;
...
if(!t_relay())
sl_reply_error();
return;
}
I was able to resolve the problem by switching to dlg_set_timeout() instead, but I wonder if there has been a regression. Last version I have on which this positively works is 4.4.7, though, so not sure when it might have broken.
One nuance: $avp(dlg_timeout) is not initialised prior to calling dlg_manage(), and the value is only set if certain conditions are true. Not sure if some stricter check appeared in later releases which could cause this to be a problem.
Thank you!
— Alex
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Hello,
I'm trying to setup the following scenario with sip ping:
UAC -> Kamailio Edge -> Kamailio Registrar
Edge proxy is a multihomed proxy with public/private ips and the registrar
is a kamailio on a private network. The edge acts as a nat proxy and
loadbalancer.
Edge proxy inserts a Path header (and contact alias) which get correctly
saved on registrar usrloc. Registration works as expected.
Now, since I need to keep nat open towards the uacs and expire them when
they're not reachable anymore, I'm trying to send sip pings from the
registrar via the edge proxy. I'm using nathelper sipping in the registrar.
What I see is that the registrar sends out a sip options putting in the
Route header the Path as expected, but the sip packet gets sent directly to
the UAC contact and not via the edge, as the Route header specifies.
After looking into the nathelper code, it seems that the sip packet is sent
via udp directly without any specific routing. So the question: it should
work what I'm trying to achieve? Maybe not?
Probably I can work around it setting the ;received in the contact on
registrar (it will set to the edge proxy) and since the contact is aliased
on the edge when the edge receives an option from the registrar it can
process the alias and send it to the correct endpoint, but seems a
workaround?
Or using the keepalive module maybe, even if that means setting specific
timers and manually do what the nathelper module already does?
Any hint?
Thanks,
Matteo
Hi sr-users,
Does pure RFC5626 outbound work without an edge proxy->internal proxy
design? By "pure" I mean no nathelper to rewrite addresses.
I tried setting up the following:
Configuration: use standard kamailio configuration without WITH_NAT
(Ignore RTP-rtpengine/rtpproxy for the moment as I am just testing the
control plane)
1. UA1 UA2 each behind NAT, with bogus Contact: headers
2. kamailio loaded with rr/tm (no outbound/path because I am using single
proxy/registrar — without edge proxies)
3. no nathelper: no Contact rewriting, set_contact_alias etc
4. Both UA1 and UA2 establish persistent TLS to kamailio
5. INVITE/200 OK/ACK does work.
6. Contact headers show the NAT bogus addresses (as expected). UA1/UA2 are
configured to be "dumb"(i.e. don't self-rewrite Contact:/SDP based on
rport/received).
Problem:
7. In-dialog requests don't work as kamailio tries to route to the bogus
addresses per the Contact header. I.e. kamailio doesn't seem to resolve the
UAs(bogus Contact addresses) to the persistent TLS connections.
Now in the Route header I don't see any flow-token so probably kamailio is
doing "normal" routing instead of RFC5626 routing (i.e. because it has no
flow-token to match with an existing flow).
This leads me to ask: for pure RFC5626 to work (no nathelper stuff at all)
is it a must that there is a "edge-proxy--[1]-->internal-proxy" layout?
...and...the flow-tokens in [1] are what make it possible to skip bogus
Contact: header and route to an existing flow?
Regards
Shih-Ping Chan