Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dialog keep-alive only for own records #3018

Closed
Riccardo-78 opened this issue Feb 7, 2022 · 2 comments
Closed

dialog keep-alive only for own records #3018

Riccardo-78 opened this issue Feb 7, 2022 · 2 comments

Comments

@Riccardo-78
Copy link
Contributor

Description

When dialog module needs to send keep-alive to caller and/or called it doens't check if the ip address and port of the dialog is the current listening ip/port. If you have two distinct kamailio instances sharing a single dialog database, both instances are sending the OPTIONS and not just the one which handled the call at setup time.

Troubleshooting

Reproduction

Start two instance with a shared dialog database and db_mode set to 1 (realtime), set property ka-src for every dialog in kamailio cfg. Setup a long call and restart the instance not involved in the call. You should see it starting to send OPTIONS.

Possible Solutions

In dlg_send_ka, if the ip/port stored in the dialog db is not present in the listening ip/port set, skip the check.

Additional Information

  • Kamailio Version - output of kamailio -v
version: kamailio 5.5.2 (x86_64/linux) 55e232
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, 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
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_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: 55e232
compiled on 14:20:31 Aug 25 2021 with gcc 4.8.5
  • Operating System:
    Centos 7
@miconda
Copy link
Member

miconda commented Feb 8, 2022

I assume you mean the dialogs that are loaded upon kamailio restart, otherwise kamailio is using the records kept in memory and uses those ones.

Initially the dialog module was not designed to share the database table with another instance, but of course, a contribution can be made for this. Some similar work was done in the commit 506672e, maybe you can look at it and come up with a PR for this feature request.

@miconda miconda changed the title dialog keep-alive ignores listening ip/port dialog keep-alive only for own records Feb 8, 2022
@miconda
Copy link
Member

miconda commented Feb 14, 2022

The related PR was merged.

@miconda miconda closed this as completed Feb 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants