Hello all,
is there anyway to pause a transaction for a short while (1 second) ? I
have implemented the push notification, when the callee get register I need
a short time to be sure that the app is completely start and can do its
duty. otherwise it missed the call. so I want to pause the transaction.
I have tested async_sleep("1"); it worked. is there any better solution ?
$var(hjoin) = 0;
lock("$tU");
async_sleep("1");
Hi,
I am trying to simulate Inbound calls from UAC to Kamailio to UAS. Kamailio performs location lookup within route[LOCATION] and updates URI with the address of UAS. However, it does not add a new Record-Route. Therefore, ACK message sent by UAC is not routed by the proxy:
UAC ---> (send INVITE) ---> Kamailio ---> (send INVITE) ---> UASUAS ---> (send 180) ---> Kamailio ---> (send 180) ---> UACUAS ---> (send 200) ---> Kamailio ---> (send 200) ---> UAC
UAC ---> (send ACK) ---> Kamailio ????
ACK message has "Route" header with the address of Proxy.
Thanks,AI S
Hello, I'm using kamailio and OpenImsCore HSS module to set up an IMS
enviroment(P/I/S-CSCF and HSS). All these four modules are set up in one
cloud server in public network with different ports(4060/4061 5060 6060 3869
3870) to commonicate with each other. Now I have two users Alice and Bob,
they are in private network. I can register Alice and Bob with ImsDroid on
this IMS, however when I use Alice to call Bob, I can see "You must register
first with a S-CSCF" error. As I found this was caused by kamailio.cfg in
pcscf module, I comment out these lines below. Then I got another error
"Server error on LIR select next S-CSCF". And I captured packets on port
5060, I can see several "Request-Line: OPTIONS sip:sbc-2.ng-voice.com
SIP/2.0" and "Request-Line: OPTIONS sip:sbc-1.ng-voice.com SIP/2.0".
#if (!pcscf_is_registered("location")) {
# send_reply("403","Forbidden - You must register first with a
S-CSCF");
# break;
#}
What's wrong with my IMS? Could any body give me some help?
Thank you!
Here are my IMS configure files.
kamailio.zip
<http://sip-router.1086192.n5.nabble.com/file/n148131/kamailio.zip>
Here are my hss configure files.
hss_config.zip
<http://sip-router.1086192.n5.nabble.com/file/n148131/hss_config.zip>
--
View this message in context: http://sip-router.1086192.n5.nabble.com/You-must-register-first-with-a-S-CS…
Sent from the Users mailing list archive at Nabble.com.
Hi is there is a valy to send websocket events (not only SIP) on remote
subscribed client from config file?
I just want make shure that i need to use redis for this staff insead of
native websocket events
Hi All,
we are trying to use the Kamailio as an UAC on a PBX. It should behave just
like a normal SIP UAC (e.g. an SNOM phone).
The reason why we want that, is connecting a service to any other PBX with
Client features and security (DA).
Our setup looks like:
Kamailio UAC w/ register <-> Kamailio OBP/SBC <-> PBX
The register is working fine. We insert the credentials into DB and trigger
kamailio to reload the config (kamctl uac.reload).
Then the register is sent out including the unauth (401) handling. After
than we are registered on the PBX. The Register is sent though the OBP as
configured in DB.
We are trying to make calls:
Calls from PBX to Kamailio are working fine but we struggle with calls from
kamailio torwards PBX.
We have the l_uuid in a variable and we try to get the PV ready for the
invite.
First we need to do is rewrite the "from" URI. We thought we can get a
proper FROM URI with the uuid we have. But the uac_replace_from just sets
the $fu as given and does not make any logic with UAC credentials.
To handle the RURI, we trigger uac_reg_lookup with the uuid and it replaces
the $ru with user-name and domain from the data stored in DB. In this case
that makes no sense. The $rU should be what the user had dialed, the $rd
should be the server given in uacreg DB table. The OBP given in DB is
ignored completely.
After we managed to rewrite everything in SIP as needed we try to catch the
407 as it's shown in the module documentation with failure route. Here we
have not found any way to get the credentials for the uuid.
Now we wonder if we have missed any global setting which sets everything
right. If anybody has a similar setup and a working config, we appreciate
any help we can get.
our config looks like:
...
loadmodule "uac.so"
....
modparam("uac","auth_realm_avp","$avp(arealm)")
modparam("uac","auth_username_avp","$avp(auser)")
modparam("uac","auth_password_avp","$avp(apass)")
modparam("uac","restore_from_avp","$avp(original_uri_from)")
modparam("uac","restore_to_avp","$avp(original_uri_to)")
modparam("uac","credential","username:domain:password")
modparam("uac", "reg_db_url","DBURI")
modparam("uac", "reg_timer_interval", 60)
modparam("uac", "reg_retry_interval", 300)
modparam("uac", "reg_contact_addr", "1.2.3.4:5060")
...
route {
xlog("L_NOTICE", "INVITE: F=$fu T=$tu R=$ru\n");
route("QUERY_UUID"); # <- sets $var(UUID) to l_uuid of the DB
$var(request_user) = $rU;
uac_reg_lookup("$var(UUID)", "$ru");
$var(request_from_user) = $rU;
$rU = $var(request_user);
uac_replace_from("$var(request_from_user)","sip:$var(request_from_user)@
1.2.3.4");
t_on_failure("TRUNKAUTH");
xlog("L_NOTICE", "INVITE: F=$fu T=$tu R=$ru $avp(auser)
$avp(apass)\n"); # avp "auser and apass are "<null>"
if (!t_relay()) {
xlog("L_ERR", "error to <$tu> from <$fu>\n");
sl_reply_error();
};
}
failure_route[TRUNKAUTH] {
if (t_is_canceled()) {
exit;
}
if(t_check_status("401|407")) {
# $avp(auser) = "test"; <-should be set from the l_uuid profile
anyhow
# $avp(apass) = "test";
$var(request_user) = $rU;
if (uac_auth()) {
# We do never get here since uac_auth never returns true.
$rU = $var(request_user);
route("FORWARD_MESSAGE");
exit;
}
xlog("L_NOTICE", "DAMN!!!");
}
}
--
Jöran Vinzens - vinzens[at]sipgate.de <vinzens(a)sipgate.de>
sipgate GmbH - Gladbacher Str. 74 - 40219 Düsseldorf
HRB Düsseldorf 39841 - Geschäftsführer: Thilo Salmon, Tim Mois
Steuernummer: 106/5724/7147, Umsatzsteuer-ID: DE219349391
www.sipgate.de - www.sipgate.co.uk
Hi,
After upgrading to Kamailio v4.4, I receive the following error on boot:
May 03 17:18:22 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[24972]: ERROR: rtpengine [rtpengine.c:2691]:
select_rtpp_set(): script error-invalid id_set to be selected
May 03 17:18:22 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[24972]: ERROR: rtpengine [rtpengine.c:2691]:
select_rtpp_set(): script error-invalid id_set to be selected
May 03 17:18:22 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[24972]: NOTICE: rtpengine [rtpengine.c:1788]:
mod_init(): Default rtpp set 0 NOT found
My rtpengine module config is:
---
#!ifdef WITH_RTPENGINE
#!subst "/RTPENGINE_SOCK/udp:127.0.0.1:5050/"
modparam("rtpengine", "rtpengine_sock", "1 == RTPENGINE_SOCK")
modparam("rtpengine", "rtpengine_disable_tout", 30)
modparam("rtpengine", "rtpengine_tout_ms", 2000)
modparam("rtpengine", "rtpengine_retr", 2)
#!endif
---
Furthermore, I have set_rtpengine_set("1") before every call to the
rtpengine_* module function(s) in my route script.
Subsequently to that, Kamailio starts normally and connects to rtpengine:
May 03 17:18:22 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[24972]: INFO: rtpengine [rtpengine.c:2542]:
rtpp_test(): rtp proxy <udp:127.0.0.1:5050> found, support for it enabled
May 03 17:18:22 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[24975]: INFO: rtpengine [rtpengine.c:2542]:
rtpp_test(): rtp proxy <udp:127.0.0.1:5050> found, support for it enabled
May 03 17:18:22 allegro-4.evaristesys.com
/usr/local/sbin/kamailio[24974]: INFO: rtpengine [rtpengine.c:2542]:
rtpp_test(): rtp proxy <udp:127.0.0.1:5050> found, support for it enabled
[...]
It might be something on my end, but my guess is that in v4.4 there is a
fixup that runs beforehand and looks for a default set.
Strictly speaking, I don't need an explicitly identified set, since I'm
only using one rtpengine instance. However, I explicitly specify it
because I'd like the code to be open in the future to selecting a given
rtpengine relay based on some criteria.
-- Alex
--
Alex Balashov | Principal | Evariste Systems LLC
1447 Peachtree Street NE, Suite 700
Atlanta, GA 30309
United States
Tel: +1-800-250-5920 (toll-free) / +1-678-954-0671 (direct)
Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Hello,
My name is Zeinab and I am using kamailio to capture sip packets.
What I really want to do is to create a .pcap file so that I can open it in
Wireshark.
As I saw, that you are only saving the sip content in database. And to
create the packet I need the entire frame.
So I think there is something missing from my side. Can you help me with
that?
You can see in the attachment the field needed from wireshark
And in sip_capture I found only this:
If there is some manual were I can find the entire packets please let me
know
Thank you for your time and looking forward to hear from you.
Best Regards,
Zeinab
Hello,
My name is Zeinab and I am using kamailio to capture sip packets.
What I really want to do is to create a .pcap file so that I can open it in
Wireshark.
As I saw, that you are only saving the sip content in database. And to
create the packet I need the entire frame.
So I think there is something missing from my side. Can you help me with
that?
You can see in the attachment the field needed from wireshark
And in sip_capture I found only this:
If there is some manual were I can find the entire packets please let me
know
Thank you for your time and looking forward to hear from you.
Best Regards,
Zeinab
Hello,
as announced earlier this morning, most of the routing blocks can be
written directly in an embedded language (right now supported being Lua
and Python). The missing blocks are (most of) the event routes.
The event route from tm for branch failure route is already supported,
as the name has to be set via t_on_branch_failure(...).
In the native configuration, event routes are executed if they are
defined. Their names (as in event_route[name]) are not valid function
names for the other programming languages to be used directly
corresponding callback function name.
I was thinking of the alternative, next are the ones I came up with,
more suggestions are welcome.
1) add parameters for event route callback names, like:
modparam("htable", "evrtcb_mod_init", "ksr_htable_mod_init")
would define the name of the function for the alternative to
event_route[htable:mod-init].
This has a benefit in speed, if the parameter is not defined, then there
is no overhead in trying to execute a callback function in an embedded
language.
The drawback is that there is need to code a bit of C to add those
parameters to the components executing event routes.
2) do a direct mapping using some translation rules, like:
- prefix with ksr_
- replace ':' and '-' with underscore '_'
So event_route[htable:mod-init] will have automatically the
correspondent function ksr_htable_mod_init().
The drawback is that each time the even route should be called, a lookup
on embedded language symbols table needs to be done to see if it exists,
then execute it.
There is still some C code to do, but less than adding parameters like
for 1).
3) like 2), but instead of an automatic translation, keep a mapping table:
struct mapping {
str kname;
str ename;
} table[] = {
str_init("htable:mod-init"),
str_init("ksr_htable_mod_init"),
}
Adding a new event route will require adding a new record in the mapping
table. The benefit is that the function name in embedded language can be
selected to be whatever, with or without ties to the event_route name.
Opinions?
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference, Berlin, May 18-20, 2016 - http://www.kamailioworld.com