Hi,

I'm trying to set up a Kamailio (4.1.3) server which converts between IPv6 and IPv4. Everything looks pretty good. Now I have a test client which sends packets via IPv6, but in contact header, SDP etc. there are still IPv4 addresses. (This comes from some converting from v4 to v6 earlier.) Thus, Kamailio tries to do a fix_nated_contact(). But after fixing, the Contact URI is wrong.

Example:
inbound
Contact: <sip:bob@192.168.8.132>

outbound
Contact: <sip:bob@1234:1234:0:1234:0:0:0:2>

The correct way of transforming the Contact URI would be:
Contact: <sip:bob@[1234:1234:0:1234:0:0:0:2]>

This incorrect Contact URI doesn't hurt first, but when the called party wants to hang up the call, it addresses the URI from Contact header, and Kamailio can't parse the Request URI:


Jan 22 12:03:48 router /usr/sbin/kamailio[21309]: ERROR: pv [pv_core.c:304]: pv_get_ruri_attr(): failed to parse the R-URI
Jan 22 12:03:48 router /usr/sbin/kamailio[21309]: ERROR: rr [loose.c:934]: loose_route(): failed to parse Request URI
Jan 22 12:03:48 router /usr/sbin/kamailio[21309]: ERROR: domain [domain.c:140]: is_uri_host_local(): error while parsing R-URI


Is this a bug in the nathelper module? Was it never meant to handle IPv6 addresses? Or do I understand something wrong?

Best Regards,
Sebastian