Temporary IPv6 addresses can cause PJSIP to fail
Issue generated from Tuleap's migration script. Originally submitted by: Maxim Cournoyer (mcournoyer)
This problem seems to affect mostly GNU/Linux and macOS systems configured to change their iPv6 address often, as a privacy measure. It would affect any platform that gathers a sufficient number of temporary IPv6 addresses.
* Reproduce steps:
- Register multiple IPv6 addresses:
A script used to generate those temporary IPv6 addresses can be found here: https://gitlab.savoirfairelinux.com/snippets/116
That script and the accompanying 'gen-random-ipv6.sh' should be placed in the same directory. The IFDEV and IPV6_PREFIX should be adjusted to match your network device and IPv6 prefix, respectively. It is important that the IFDEV environment matches the *currently* used network interface if you have many, otherwise the problem will not be triggered.
Run the script like this: sudo ./add-ipv6-addresses.sh
- Launch Ring and try to place a call.
* Expected result:
The call should succeed.
* Actual result (as seen in the daemon's debug output):
[1513801602.823|14926|ice_transport.cpp :429 ] [ice:0x2fa48b0] initialization success
[1513801602.823|14926|ice_transport.cpp :482 ] ICE as master
[1513801602.829|14926|ice_transport.cpp :576 ] [ice:0x2fa48b0] (local) ufrag=2567c1bd, pwd=51e44a5d
[1513801602.829|12099|sipcall.cpp :776 ] [call:10040259774347710226] fill SDP with ICE transport 0x2d97040
dring: ../src/pjmedia/sdp.c:187: pjmedia_sdp_attr_add: Assertion `*count < (32*2 + 4)' failed.
Abandon (core dumped)
A patch addressing the issue is in review here: https://gerrit-ring.savoirfairelinux.com/\#/c/8462/