Hi there
I have the following problem - I need to remove a codec in the initial INVITE.
This happens since I changed from rtpproxy to rtpengine. I changed all rtpproxy_manage() to rtpengine_manage().
Originating INVITE with the "clearmode"
m=audio 9196 RTP/AVP 8 0 125 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:125 CLEARMODE/8000
a=rtpmap:101 telephone-event/8000
I do the following in the config
route[SDP] {
xlog(, "L_INFO", "SDP: request method $rm");
# remove CLEARMODE if Colt
if($avp(s:todirection) =~"^MyCarrier+") {
if (is_method("INVITE")) {
xlog(, "L_INFO", "SDP remove: request method $rm");
msg_apply_changes();
sdp_remove_codecs_by_name("CLEARMODE");
#sdp_remove_codecs_by_id("125");
}
}
}
This block gets hit as I can see with the xlog entry.
In the sent INVITE the "Clearmode" is still in the sdp header
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:125 CLEARMODE/8000
a=rtpmap:101 telephone-event/8000
So with rtpproxy - it worked
With rtpengine not any more ...
Any idea?
KR,
Oli
Hi,
If I am using async_route() with delay, what is the relationship between
the core async_workers parameter value and the async module 'workers'
modparam?
This doc change was intended to clarify it, I think:
https://www.mail-archive.com/sr-dev@lists.sip-router.org/msg25002.html
But it does not for me:
> Number of worker processes to be started to handle the
> asynchronous tasks for async_route() and async_sleep().
So, does that mean the module starts its own processes for these cases?
If so, does that mean I don't need core async_workers at all? Or do I?
If I do, what happens if I have fewer core async_workers than modparam
workers? What if I have more? Should I aim to keep them in sync?
Thanks,
-- Alex
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 (direct) / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Hi,
I have this log_prefix:
log_prefix="[$ci $mt] "
Which means xlog("L_INFO", "xyz") normally results in log entries like this:
Nov 22 00:29:50 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[27625]: [1-27702(a)10.150.20.6 1] INFO: xyz
But if xlog("L_INFO", "xyz") happens to occur in a route[] block that is
resumed after async_route()—I have not tested other async
functions—there is no prefix:
Nov 22 00:29:52 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[27678]: INFO: xyz
-- Alex
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 (direct) / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Hi,
I have this set up in my configuration boilerplate:
--
flags
DUMMY : 1,
PDD_DAMPEN : 2,
PROXY_MEDIA_SET : 3,
#!ifdef WITH_NAT_TRAVERSAL
SIPPING : 4,
#!endif
DUMMY2 : 12
--
I then use these aliases in transaction flags, e.g. setflag(PDD_DAMPEN).
But I can honestly say I don't remember how I arrived at this approach.
I wrote it somewhere in early 3.x days. However, when I look at the core
documentation for the 'flags' declaration, all I find is:
http://www.kamailio.org/wiki/cookbooks/4.4.x/core#flags
Or namely:
--
flags
Alias name: bool
--
And there is no entry for "bool". So, I couldn't have possibly arrived
at this usage from the documentation.
Can anyone help me reverse-engineer this historical phenomenon? And,
given that the documentation doesn't support it particularly, is it
still an encouraged practice? Or should one use #!defined constants
instead, as in the stock config?
Thanks,
-- Alex
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 (direct) / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Hi,
I have
--
flags
BLAH : 1,
DUMMY : 12
onsend_route_reply=yes
route {
...
setflag(BLAH);
if(!t_relay())
sl_reply_error();
}
onsend_route {
if(is_reply() && isflagset(BLAH))
do_things();
}
--
My discovery has been that isflagset(BLAH) always == FALSE _unless_ an
onreply_route has been armed for the request, regardless of whether it
is necessary.
In other words, the following causes isflagset(BLAH) to == TRUE (if set,
when appropriate) in the onsend_route for the reply:
--
flags
BLAH : 1,
DUMMY : 12
onsend_route_reply=yes
onreply_route[BOGUS] {
exit;
}
route {
...
setflag(BLAH);
t_on_reply("BOGUS");
if(!t_relay())
sl_reply_error();
}
onsend_route {
if(is_reply() && isflagset(BLAH))
do_things();
}
--
But without the onreply_route, it doesn't work.
--
Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 (direct) / +1-800-250-5920 (toll-free)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Hello, I am having a bit of trouble finding information on how to setup a
registering trunk with Kamailio.
By registering trunk, I mean a trunk between a PBX and Kamailio, of say 15
DID's, where the main DID (Pilot) registers with Kamailio and all the other
14 DID are able to make/receive calls without having to register all DID's
individually.
If the pilot DID registration goes away, the trunk is then considered to be
unreachable/down.
I have seen this in the past with a Broadsoft setup, but I can't figure out
a way to do it with Kamailio.
I have my pilot DID setup and registered with Kamailio ok and I can make
calls in and out through my PSTN gateway, but I'm unsure how to group all
the other DID's so they are matched against the pilot DID.
Is this possible? Any help is appreciated.
Regards,
Andrei.
--
Regards,
Andrei.
Hello,
following the last IRC devel meeting, I am writing the summary of the
main points being discussed there and what's planned to get to Kamailio
v5.0.
1) Freezing should be done either before Chrismas holidays or at
beginning of January 2017 to aim meeting the deadline for next Debian
stable distro
2) Restructuring the source tree
To be done in the weeks before freezing, so eventual fixes won't have
hard time to be backported to 4.4.
This means it will be done in December. Open issues:
a) anyone aware of a tool that can update include directives upon
relocation of the file?
b) who is interested to join an eventual online session to perform the
restructuring? C coding is not a must here, but more knowledge of
sed/awk/perl/python/... and Makefiles ...
3) Defining a template for generating main file of a module
The scope is to have a descriptive file for the module where one lists
exported symbols (config params, functions, kemi functions, rpc/mi
commands, etc.) which along with a template will generate the c code.
The effective implementation of the functions/commands will be done
separately, in a different file (e.g, the main file that is generated
can have references to parameter variables with extern ... and will also
generate the .h which will have only the prototypes for the functions).
The main goal here is to get a way of easily generated an index of
exported symbols that can be used to discover missing documentation.
Right now we sort of do 'gentlemen agreement' on documenting functions
and parameters, but many rpc commands are not documented (they are
extracted with some tool scanning compiled objects).
Also, same concept as with c code can be used to generate some stubs for
documentation that can be included in docbook xml files.
Few proposals of templating engines were mentioned, coming in my mind
now being jinja2 and mustache. Anyone else with more suggestions?
Or even propose alternatives of what can be used to solve this relation
between code and docs?
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Berlin, Nov 28-30, 2016 - http://www.asipto.com
Hi,
I am using app_mono module and building my logic in c# app.
I am unable to understand how to send the decision back to kamalio.cfg.
More precisely:
I would like my routing logic to allow specific user names though they are not registered as subscribers. Like: translate(a)myip.cyracom.com<mailto:translate@myip.cyracom.com>
I have the logic in c# app which takes $ru and validates such that:
Host is myip.cyracom.com
User is translate
How do I communicate the decision if it is valid or not back to my config script.
Do I need to introduce new pseudo variable for this purpose?
Thanks,
Pranathi
Hi,
I am using MSRP feature of Blink client. I want to track when the chat starts and ends so I can free up server resources.
Apparently Blink client does not send BYE when MSRP chat window closes. It does not support SIP session timers even.
So potential use of SIP session timers (sst and dialog modules) is ruled out.
Only possible way is to track every message that goes through the server and keep the session alive.
If no message comes within “expiry time period”, server can send “bye” to all parties and tear up the session.
Can you please comment if there are other approaches to solve this problem?
If not, are they any modules that will help me implement the above approach easily?
Thanks
Pranathi