Module: kamailio
Branch: master
Commit: 43e64af9bade5fedf34e847f662b97ce94c041bc
URL: https://github.com/kamailio/kamailio/commit/43e64af9bade5fedf34e847f662b97c…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2025-06-05T13:07:59+02:00
dialog: bump cseq for generated byes also for caller side
- do it always, they are the last requests within dialog
---
Modified: src/modules/dialog/dlg_req_within.c
---
Diff: https://github.com/kamailio/kamailio/commit/43e64af9bade5fedf34e847f662b97c…
Patch: https://github.com/kamailio/kamailio/commit/43e64af9bade5fedf34e847f662b97c…
---
diff --git a/src/modules/dialog/dlg_req_within.c b/src/modules/dialog/dlg_req_within.c
index 6467b32b349..52e492d2074 100644
--- a/src/modules/dialog/dlg_req_within.c
+++ b/src/modules/dialog/dlg_req_within.c
@@ -425,10 +425,9 @@ static inline int send_bye(
goto err;
}
- /* safety bump of cseq if prack was involved in call setup */
- if(cell->iflags & DLG_IFLAG_PRACK) {
- dialog_info->loc_seq.value += 80;
- }
+ /* safety bump of cseq for callee side if prack was involved in call setup
+ * or keepalives were sent to caller side */
+ dialog_info->loc_seq.value += 100;
LM_DBG("sending BYE to %s\n",
(dir == DLG_CALLER_LEG) ? "caller" : "callee");
nochnoi82 created an issue (kamailio/kamailio#4272)
Hello to everyone.
I deployed Kamailio on Debian system. Install was successfull.
I have the task to use Kamailio as proxy between Avaya PBX and Videoconference System.
Outgoing calls only from
IPPhone ----- Avaya PBX ---sip----> Kamailio -----sip----> Video System-IVR
IVR number is 3000.
Avaya Prefix for routing to Kamailio is 1234.
When we dial number 12343000 the call goes to Video system with Header "TO" 12343000@ip_of_PBXAvaya and call drops.
How to replace ip-address of Avaya to ip-address of Video_System? What to add in kamailio.cfg?
ip video_system - *.*.60.3
ip avaya *.*.20.10
My route config
####### Routing Logic ########
/* Main SIP request routing logic
* - processing of any incoming SIP request starts with this route
* - note: this is the same as route { ... } */
request_route {
# per request initial checks
route(REQINIT);
# NAT detection
route(NATDETECT);
# CANCEL processing
if (is_method("CANCEL")) {
if (t_check_trans()) {
route(RELAY);
}
exit;
}
# handle retransmissions
if (!is_method("ACK")) {
if(t_precheck_trans()) {
t_check_trans();
exit;
}
t_check_trans();
}
# handle requests within SIP dialogs
route(WITHINDLG);
### only initial requests (no To tag)
# authentication
route(AUTH);
# record routing for dialog forming requests (in case they are routed)
# - remove preloaded route headers
remove_hf("Route");
if (is_method("INVITE|SUBSCRIBE")) {
record_route();
}
# account only INVITEs
if (is_method("INVITE")) {
setflag(FLT_ACC); # do accounting
}
if ($rU==$null) {
sl_send_reply("484", "Address Incomplete");
exit;
}
$du = "sip:*.*.60.3:5060";
route(RELAY);
exit;
}
# Wrapper for relaying requests
route[RELAY] {
# enable additional event routes for forwarded requests
# - serial forking, RTP relaying handling, a.s.o.
if (is_method("INVITE|BYE|SUBSCRIBE|UPDATE")) {
if(!t_is_set("branch_route")) t_on_branch("MANAGE_BRANCH");
}
if (is_method("INVITE|SUBSCRIBE|UPDATE")) {
if(!t_is_set("onreply_route")) t_on_reply("MANAGE_REPLY");
}
if (is_method("INVITE")) {
if(!t_is_set("failure_route")) t_on_failure("MANAGE_FAILURE");
}
if (!t_relay()) {
sl_reply_error();
}
exit;
}
# Per SIP request initial checks
route[REQINIT] {
# no connect for sending replies
set_reply_no_connect();
# enforce symmetric signaling
# - send back replies to the source address of request
force_rport();
#!ifdef WITH_ANTIFLOOD
# flood detection from same IP and traffic ban for a while
# be sure you exclude checking trusted peers, such as pstn gateways
# - local host excluded (e.g., loop to self)
if(src_ip!=myself) {
if($sht(ipban=>$si)!=$null) {
# ip is already blocked
xdbg("request from blocked IP - $rm from $fu (IP:$si:$sp)\n");
exit;
}
if (!pike_check_req()) {
xlog("L_ALERT","ALERT: pike blocking $rm from $fu (IP:$si:$sp)\n");
$sht(ipban=>$si) = 1;
exit;
}
}
#!endif
if($ua =~ "friendly|scanner|sipcli|sipvicious|VaxSIPUserAgent|pplsip") {
# silent drop for scanners - uncomment next line if want to reply
# sl_send_reply("200", "OK");
exit;
}
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if(is_method("OPTIONS") && uri==myself && $rU==$null) {
sl_send_reply("200","Keepalive");
exit;
}
if(!sanity_check("17895", "7")) {
xlog("Malformed SIP request from $si:$sp\n");
exit;
}
}
# Handle requests within SIP dialogs
route[WITHINDLG] {
if (!has_totag()) return;
# sequential request withing a dialog should
# take the path determined by record-routing
if (loose_route()) {
route(DLGURI);
if (is_method("BYE")) {
setflag(FLT_ACC); # do accounting ...
setflag(FLT_ACCFAILED); # ... even if the transaction fails
} else if ( is_method("ACK") ) {
# ACK is forwarded statelessly
route(NATMANAGE);
} else if ( is_method("NOTIFY") ) {
# Add Record-Route for in-dialog NOTIFY as per RFC 6665.
record_route();
}
route(RELAY);
exit;
}
if (is_method("SUBSCRIBE") && uri == myself) {
# in-dialog subscribe requests
route(PRESENCE);
exit;
}
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
# no loose-route, but stateful ACK;
# must be an ACK after a 487
# or e.g. 404 from upstream server
route(RELAY);
exit;
} else {
# ACK without matching transaction ... ignore and discard
exit;
}
}
sl_send_reply("404","Not here");
exit;
}
# Handle SIP registrations
route[REGISTRAR] {
if (!is_method("REGISTER")) return;
if(isflagset(FLT_NATS)) {
setbflag(FLB_NATB);
#!ifdef WITH_NATSIPPING
# do SIP NAT pinging
setbflag(FLB_NATSIPPING);
#!endif
}
if (!save("location")) {
sl_reply_error();
}
exit;
}
# User location service
route[LOCATION] {
#!ifdef WITH_SPEEDDIAL
# search for short dialing - 2-digit extension
if($rU=~"^[0-9][0-9]$") {
if(sd_lookup("speed_dial")) {
route(SIPOUT);
}
}
#!endif
#!ifdef WITH_ALIASDB
# search in DB-based aliases
if(alias_db_lookup("dbaliases")) {
route(SIPOUT);
}
#!endif
$avp(oexten) = $rU;
if (!lookup("location")) {
$var(rc) = $rc;
route(TOVOICEMAIL);
t_newtran();
switch ($var(rc)) {
case -1:
case -3:
send_reply("404", "Not Found");
exit;
case -2:
send_reply("405", "Method Not Allowed");
exit;
}
}
# when routing via usrloc, log the missed calls also
if (is_method("INVITE")) {
setflag(FLT_ACCMISSED);
}
route(RELAY);
exit;
}
# Presence server processing
route[PRESENCE] {
if(!is_method("PUBLISH|SUBSCRIBE")) return;
if(is_method("SUBSCRIBE") && $hdr(Event)=="message-summary") {
route(TOVOICEMAIL);
# returns here if no voicemail server is configured
sl_send_reply("404", "No voicemail service");
exit;
}
#!ifdef WITH_PRESENCE
#!ifdef WITH_MSGREBUILD
# apply changes in case the request headers or body were modified
msg_apply_changes();
#!endif
if (!t_newtran()) {
sl_reply_error();
exit;
}
if(is_method("PUBLISH")) {
handle_publish();
t_release();
} else if(is_method("SUBSCRIBE")) {
handle_subscribe();
t_release();
}
exit;
#!endif
# if presence enabled, this part will not be executed
if (is_method("PUBLISH") || $rU==$null) {
sl_send_reply("404", "Not here");
exit;
}
return;
}
# IP authorization and user authentication
route[AUTH] {
#!ifdef WITH_AUTH
#!ifdef WITH_IPAUTH
if((!is_method("REGISTER")) && allow_source_address()) {
# source IP allowed
return;
}
#!endif
if (is_method("REGISTER") || from_uri==myself) {
# authenticate requests
if (!auth_check("$fd", "subscriber", "1")) {
auth_challenge("$fd", "0");
exit;
}
# user authenticated - remove auth header
if(!is_method("REGISTER|PUBLISH"))
consume_credentials();
}
# if caller is not local subscriber, then check if it calls
# a local destination, otherwise deny, not an open relay here
if (from_uri!=myself && uri!=myself) {
sl_send_reply("403","Not relaying");
exit;
}
#!else
# authentication not enabled - do not relay at all to foreign networks
if(uri!=myself) {
sl_send_reply("403","Not relaying");
exit;
}
#!endif
return;
}
# Caller NAT detection
route[NATDETECT] {
#!ifdef WITH_NAT
if (nat_uac_test("19")) {
if (is_method("REGISTER")) {
fix_nated_register();
} else {
if(is_first_hop()) {
set_contact_alias();
}
}
setflag(FLT_NATS);
}
#!endif
return;
}
# RTPProxy control and signaling updates for NAT traversal
route[NATMANAGE] {
#!ifdef WITH_NAT
if (is_request()) {
if(has_totag()) {
if(check_route_param("nat=yes")) {
setbflag(FLB_NATB);
}
}
}
if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
#!ifdef WITH_RTPENGINE
if(nat_uac_test("8")) {
rtpengine_manage("SIP-source-address replace-origin replace-session-connection");
} else {
rtpengine_manage("replace-origin replace-session-connection");
}
#!else
if(nat_uac_test("8")) {
rtpproxy_manage("co");
} else {
rtpproxy_manage("cor");
}
#!endif
if (is_request()) {
if (!has_totag()) {
if(t_is_branch_route()) {
add_rr_param(";nat=yes");
}
}
}
if (is_reply()) {
if(isbflagset(FLB_NATB)) {
if(is_first_hop())
set_contact_alias();
}
}
if(isbflagset(FLB_NATB)) {
# no connect message in a dialog involving NAT traversal
if (is_request()) {
if(has_totag()) {
set_forward_no_connect();
}
}
}
#!endif
return;
}
# URI update for dialog requests
route[DLGURI] {
#!ifdef WITH_NAT
if(!isdsturiset()) {
handle_ruri_alias();
}
#!endif
return;
}
# Routing to foreign domains
route[SIPOUT] {
if (uri==myself) return;
append_hf("P-Hint: outbound\r\n");
route(RELAY);
exit;
}
# PSTN GW routing
route[PSTN] {
#!ifdef WITH_PSTN
# check if PSTN GW IP is defined
if (strempty($sel(cfg_get.pstn.gw_ip))) {
xlog("SCRIPT: PSTN routing enabled but pstn.gw_ip not defined\n");
return;
}
# route to PSTN dialed numbers starting with '+' or '00'
# (international format)
# - update the condition to match your dialing rules for PSTN routing
if(!($rU=~"^(\+|00)[1-9][0-9]{3,20}$")) return;
# only local users allowed to call
if(from_uri!=myself) {
sl_send_reply("403", "Not Allowed");
exit;
}
# normalize target number for pstn gateway
# - convert leading 00 to +
if (starts_with("$rU", "00")) {
strip(2);
prefix("+");
}
if (strempty($sel(cfg_get.pstn.gw_port))) {
$ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip);
} else {
$ru = "sip:" + $rU + "@" + $sel(cfg_get.pstn.gw_ip) + ":"
+ $sel(cfg_get.pstn.gw_port);
}
route(RELAY);
exit;
#!endif
return;
}
# JSONRPC over HTTP(S) routing
#!ifdef WITH_JSONRPC
event_route[xhttp:request] {
set_reply_close();
set_reply_no_connect();
if(src_ip!=127.0.0.1) {
xhttp_reply("403", "Forbidden", "text/html",
"<html><body>Not allowed from $si</body></html>");
exit;
}
if ($hu =~ "^/RPC") {
jsonrpc_dispatch();
exit;
}
xhttp_reply("200", "OK", "text/html",
"<html><body>Wrong URL $hu</body></html>");
exit;
}
#!endif
# Routing to voicemail server
route[TOVOICEMAIL] {
#!ifdef WITH_VOICEMAIL
if(!is_method("INVITE|SUBSCRIBE")) return;
# check if VoiceMail server IP is defined
if (strempty($sel(cfg_get.voicemail.srv_ip))) {
xlog("SCRIPT: VoiceMail routing enabled but IP not defined\n");
return;
}
if(is_method("INVITE")) {
if($avp(oexten)==$null) return;
$ru = "sip:" + $avp(oexten) + "@" + $sel(cfg_get.voicemail.srv_ip)
+ ":" + $sel(cfg_get.voicemail.srv_port);
} else {
if($rU==$null) return;
$ru = "sip:" + $rU + "@" + $sel(cfg_get.voicemail.srv_ip)
+ ":" + $sel(cfg_get.voicemail.srv_port);
}
route(RELAY);
exit;
#!endif
return;
}
# Manage outgoing branches
branch_route[MANAGE_BRANCH] {
xdbg("new branch [$T_branch_idx] to $ru\n");
route(NATMANAGE);
return;
}
# Manage incoming replies
reply_route {
if(!sanity_check("17604", "6")) {
xlog("Malformed SIP response from $si:$sp\n");
drop;
}
return;
}
# Manage incoming replies in transaction context
onreply_route[MANAGE_REPLY] {
xdbg("incoming reply\n");
if(status=~"[12][0-9][0-9]") {
route(NATMANAGE);
}
return;
}
# Manage failure routing cases
failure_route[MANAGE_FAILURE] {
route(NATMANAGE);
if (t_is_canceled()) exit;
#!ifdef WITH_BLOCK3XX
# block call redirect based on 3xx replies.
if (t_check_status("3[0-9][0-9]")) {
t_reply("404","Not found");
exit;
}
#!endif
#!ifdef WITH_BLOCK401407
# block call redirect based on 401, 407 replies.
if (t_check_status("401|407")) {
t_reply("404","Not found");
exit;
}
#!endif
#!ifdef WITH_VOICEMAIL
# serial forking
# - route to voicemail on busy or no answer (timeout)
if (t_check_status("486|408")) {
$du = $null;
route(TOVOICEMAIL);
exit;
}
#!endif
return;
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4272
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4272(a)github.com>
Module: kamailio
Branch: master
Commit: 0ab44e999c81a25dc826f23e724cf699ce894beb
URL: https://github.com/kamailio/kamailio/commit/0ab44e999c81a25dc826f23e724cf69…
Author: Kamailio Dev <kamailio.dev(a)kamailio.org>
Committer: Kamailio Dev <kamailio.dev(a)kamailio.org>
Date: 2025-06-04T08:01:09+02:00
modules: readme files regenerated - userblocklist ... [skip ci]
---
Modified: src/modules/userblocklist/README
---
Diff: https://github.com/kamailio/kamailio/commit/0ab44e999c81a25dc826f23e724cf69…
Patch: https://github.com/kamailio/kamailio/commit/0ab44e999c81a25dc826f23e724cf69…
---
diff --git a/src/modules/userblocklist/README b/src/modules/userblocklist/README
index 9aabcb73d19..4cff231c495 100644
--- a/src/modules/userblocklist/README
+++ b/src/modules/userblocklist/README
@@ -154,9 +154,9 @@ Chapter 1. Admin Guide
blocklisted or not.
An additional functionality that this module provides is the ability to
- handle global blocklists. This lists are loaded on startup into memory,
- thus providing a better performance than the userblocklist case. These
- global blocklists are useful to allow only calls to certain
+ handle global blocklists. These lists are loaded on startup into
+ memory, thus providing a better performance than the userblocklist
+ case. These global blocklists are useful to allow only calls to certain
international destinations, i.e. block all not allowlisted numbers.
They could also be used to prevent the blocklisting of important
numbers, as allowlisting is supported too. This is useful for example
Module: kamailio
Branch: master
Commit: 81357b548b6e0cdf464361c2b1742d797f0d7e95
URL: https://github.com/kamailio/kamailio/commit/81357b548b6e0cdf464361c2b1742d7…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2025-06-04T07:50:46+02:00
userblocklist: docs - small typo
---
Modified: src/modules/userblocklist/doc/userblocklist_admin.xml
---
Diff: https://github.com/kamailio/kamailio/commit/81357b548b6e0cdf464361c2b1742d7…
Patch: https://github.com/kamailio/kamailio/commit/81357b548b6e0cdf464361c2b1742d7…
---
diff --git a/src/modules/userblocklist/doc/userblocklist_admin.xml b/src/modules/userblocklist/doc/userblocklist_admin.xml
index db8efd86896..0a64d648ea1 100644
--- a/src/modules/userblocklist/doc/userblocklist_admin.xml
+++ b/src/modules/userblocklist/doc/userblocklist_admin.xml
@@ -20,7 +20,7 @@
</para>
<para>
An additional functionality that this module provides is the ability
- to handle global blocklists. This lists are loaded on startup into
+ to handle global blocklists. These lists are loaded on startup into
memory, thus providing a better performance than the userblocklist
case. These global blocklists are useful to allow only calls to certain
international destinations, i.e. block all not allowlisted numbers.
dynax60 created an issue (kamailio/kamailio#4271)
Hi all!
```bash
[root@kamailio kamailio]# cat /etc/rocky-release
Rocky Linux release 9.5 (Blue Onyx)
[root@kamailio kamailio]# sestatus
SELinux status: disabled
[root@kamailio kamailio]# kamailio -v
version: kamailio 6.0.1 (x86_64/linux) fce50d
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_SEND_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: fce50d
compiled on 00:00:00 Sep 13 2022 with gcc 11.5.0
```
I am trying to use the mysql option group name `kamailio` to connect to MySQL:
```
#!ifdef WITH_MYSQL
#!trydef DBURL "mysql://[kamailio]/kamailio"
#!endif
```
My /etc/my.cnf file:
```
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d/
```
/etc/my.cnf.d/kamailio.cnf:
```
[kamailio]
socket=/var/lib/mysql/mysql.sock
user = kamailio
password = ...
default-character-set = utf8
```
Let's check the group name and permissions (for test purposes):
```bash
[root@kamailio kamailio]# usermod -s /bin/sh kamailio
[root@kamailio kamailio]# su - kamailio -c 'my_print_defaults -c /etc/my.cnf kamailio'
--socket=/var/lib/mysql/mysql.sock
--user=kamailio
--password=...
--default-character-set=utf8
```
The cuts from log file:
```
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:1035]: init_mod(): auth_db
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <db_bind_api> in module db_mysql [/usr/lib64/kamailio/modules/db_mysql.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [lib/srdb1/db.c:217]: db_bind_mod(): using db bind api for db_mysql
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <bind_auth_s> in module auth [/usr/lib64/kamailio/modules/auth.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:1035]: init_mod(): presence
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: presence [presence.c:301]: mod_init(): db_url=mysql://[kamailio]/kamailio (len=27 addr=0x7f6002ba6f00)
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/utils/sruid.c:127]: sruid_init(): root for sruid is [pres-683a04b4-1c59-] (0 / 19)
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: presence [presence.c:345]: mod_init(): server_address parameter not set in configuration file
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <bind_sl> in module sl [/usr/lib64/kamailio/modules/sl.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <load_tm> in module tm [/usr/lib64/kamailio/modules/tm.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <t_newtran> in module tm [/usr/lib64/kamailio/modules/tm.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <t_relay_to_tcp> in module tm [/usr/lib64/kamailio/modules/tm.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <t_relay_to_udp> in module tm [/usr/lib64/kamailio/modules/tm.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <t_relay> in module tm [/usr/lib64/kamailio/modules/tm.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <t_forward_nonack> in module tm [/usr/lib64/kamailio/modules/tm.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <t_release> in module tm [/usr/lib64/kamailio/modules/tm.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:762]: find_mod_export_record(): found export of <db_bind_api> in module db_mysql [/usr/lib64/kamailio/modules/db_mysql.so]
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [lib/srdb1/db.c:217]: db_bind_mod(): using db bind api for db_mysql
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [lib/srdb1/db.c:322]: db_do_init2(): connection 0x7f6002c25500 not found in pool
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: db_mysql [km_my_con.c:121]: db_mysql_new_connection(): opening connection: mysql://xxxx:xxxx@/kamailio
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: ERROR: db_mysql [km_my_con.c:219]: db_mysql_new_connection(): driver error: Access denied for user 'kamailio'@'localhost' (using password: NO)
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: ERROR: <core> [lib/srdb1/db.c:326]: db_do_init2(): could not add connection to the pool
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: ERROR: presence [presence.c:417]: mod_init(): Connection to database failed
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: ERROR: <core> [core/sr_module.c:1040]: init_mod(): Error while initializing module presence (/usr/lib64/kamailio/modules/presence.so)
May 30 19:19:16 kamailio /usr/sbin/kamailio[7257]: DEBUG: <core> [core/sr_module.c:875]: destroy_modules(): starting modules destroy phase
```
Strange things happens if I place [kamailio] configuration into /etc/my.cnf - everything works like a charm! What could be wrong? How to check by other means? The problem is exactly that kamailio can't read the configuration in the external file /etc/my.cnf.d/kamailio.cnf
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4271
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4271(a)github.com>