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

topos: BYE befor 200 OK creates new connection #1339

Closed
sergey-vb opened this issue Nov 27, 2017 · 5 comments
Closed

topos: BYE befor 200 OK creates new connection #1339

sergey-vb opened this issue Nov 27, 2017 · 5 comments

Comments

@sergey-vb
Copy link
Contributor

sergey-vb commented Nov 27, 2017

Description

If call has ended with BYE after 180/183 before 200 OK, kamailio tries to create new connection to destination, not to use existing.
With firewall enabled and TLS transport this is issue.

Troubleshooting

Reproduction

Load topos module, register client (asterisk, it shows port 5061 in contact but real query comes from random tcp port) using TLS, make call to it, terminate call with BYE, before answering.

With topoh module there are no such problem..

Log Messages

kamailio-topos.gz

SIP Traffic

topos-by-befor-ack.tar.gz

Additional Information

version: kamailio 5.2.0-dev1 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, 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_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled on 09:24:06 Nov 27 2017 with gcc 4.8.5

  • Operating System:

Red Hat Enterprise Linux Server 7.3

3.10.0-514.el7.x86_64 #1 SMP Wed Oct 19 11:24:13 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux

@miconda
Copy link
Member

miconda commented Dec 3, 2017

It looks like you need to use set_contact_alias() for the replies, because the contact in 180 is not matching the source port. Then use handle_ruri_alias() for BYE. It's more or less what it is done for natted traffic.

@sergey-vb
Copy link
Contributor Author

I have tried it, but with no result for topos module.
For topoh it works.
But in me config I using fix_nated_contact();

Daniel, please look at line 1202 form debug output, in that line:
Contact: sip:12345@11.22.33.44:48418;transport=TLS
with correct port, but topos does not use or does not see it...

If you need more debug info please let me know.

miconda added a commit that referenced this issue Dec 5, 2017
- might be updated in config execution
- reported by GH #1339
@miconda
Copy link
Member

miconda commented Dec 5, 2017

Can you try with master or using the patch referenced above?

@sergey-vb
Copy link
Contributor Author

Thank you Daniel.
Now it works correct, it creates BYE with correct ruri and send it to correct port, without creation of new connection.

In my kamailio configuration I using fix_nated_contact(). Do I need switch to set_contact_alias() and if so, how I can do this with minimal changes?

Also for best perfomance I had to add some indexes to topos_d and topos_t tables.
I have attached my structure to this message.

Thank you.
topos_db.sql.gz

@miconda
Copy link
Member

miconda commented Dec 7, 2017

OK, thanks for testing and reporting back.

For db indexes, can you make a PR by updating schema xml definition:

I am closing this one.

@miconda miconda closed this as completed Dec 7, 2017
miconda added a commit that referenced this issue Dec 7, 2017
- might be updated in config execution
- reported by GH #1339

(cherry picked from commit ebf570f)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants