Hello,
when using dns failover (SRV records) with kamailio 3.2 I noticed, that
the failover sip message (to the failover host specified by DNS) is sent
from a different socket.
For example:
incoming sip message is on socket ip1:5060
=> send socket for relayed message (original) is ip1:5060
but send socket for relayed message (failover) is ip2:5060
reparse_on_dns_failover is left on its default value (1).
In the the relayed message (failover):
Reord-Route-Header is as in original message (ip1:5060) - correct
Via-Header is ip2:5060 (matching the send socket) - incorrect
This is exactly the opposite case regarding the README:
"Disadvantage: only the via header is replaced in the message buffer, so
the outgoing socket address is not corrected in any other part of the
message. It is dangerous on multihomed hosts: when the new SIP request
after the DNS failover is sent via different interface than the first
request, the message can contain incorrect ip address in the
Record-Route header for instance."
I think the message was rebuilt, because only VIA header and send socket
changed.
Looking into forward.c:
598 #ifdef USE_DNS_FAILOVER
599 if (prev_send_sock!=send_info->send_sock){
600 /* rebuild the message only if the
send_sock changed */
But I did not change the send socket... any ideas why this condition is
true?
Cheers and a happy new 2013
Jasmin