Hello guys,

I'm listening on port 443 for tls and 5111 for tcp.

Client registers on 443 and makes a call over tls which kamailio forwards over tcp.

Because freeswitch doesn't support "sips" yet, when replies come back from freeswitch (which contact set as "sip:" i manually change that tp "sips:" for the client to not die with "SIPS Required".

Call is established and the client responds with ACK. At this point i need to change back the contact "sips:" to "sip:".

This is the route that changes it:

route[FIXCONTACT] {

    # This is freeswitch sending a message, so we change "sip:" to "sips:"
    xlog("L_ERR","[FIXCONTACT]: User-Agent is: $ua\n");

    if( $ua =~ "^FreeSWITCH" ) {
        if( subst('/^(Contact:.*)sip:/\1sips:/') ) {
            xlog("L_ERR","[FIXCONTACT]: Method $rm Status $rs Changed contact coming from freeSWITCH from sip to sips [$ct]!\n"); 
        }
    # Else it is the client, when change it back from "sips:" to "sip:"
    } else {
        if( subst("/^(Contact:.*)sips:/\1sip:/") ) {
            xlog("L_ERR","[FIXCONTACT]: Method $rm Status $rs Changed contact coming from CLIENT from sips to sip [$ct]!\n"); 
        }
    }
    return;
}

When kamailio is preparing to send out the ACK via TCP I'm seeing:

[forward.c:268]: get_send_socket2(): protocol/port mismatch

And I really don't know why it's doing this...

Help is appreciated!


Regards,

David Villasmil
phone: +34669448337