Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Submitted By: Iñaki Baz Castillo (ibc_sf)
Assigned to: Dan (dan_pascu)
Summary: [nat_traversal] Should match source and *local* IP:port
I've realized of a limitation in nat_traversal keepalive mechanism. Note the following case:
- OpenSIPS listening in two address: ADDR1, ADDR2 (can be different IP and/or port).
- A multi-account phone (Twinkle) that uses the same internal port for all the accounts (5060).
When account 1 is registered nat_traversal creates a keepalive:
When the register from account 2 arrives nat_traversal *doesn't* create a new keepalive since the source address (IP and port) matches an existing one, but this is a bug since account 2 is using ADDR2 as socket, so when OpenSIPS tries to route a request to account 2 it will fail since there is NO keepalive between OpenSIPS ADDR2 and PHONE_PUBLIC_ADDR.
I assume the problem is in the function "HashTable_search":