rem: via1Port = (msg->via1->port ? msg->via1->port : SIP_PORT); diffPort = (msg->rcv.src_port != via1Port);
add: if (isSIPAsymmetric(getUserAgent(msg))) {  diffPort = False; } else { via1Port = (msg->via1->port ? msg->via1->port : SIP_PORT); diffPort = (msg->rcv.src_port != via1Port); }
context: testSourceAddress(struct sip_msg* msg){    Bool diffIP, diffPort;    int via1Port;    diffIP   = received_test(msg);    via1Port = (msg->via1->port ? msg->via1->port : SIP_PORT);    diffPort = (msg->rcv.src_port != via1Port);    return (diffIP || diffPort);}