I work for a service provider and have been looking into a problem with a 7960 phone that has recently been upgraded to the POS3-08-8-00 SIP firmware.
The problem is that the rules being applied to match incoming requests result in a lot of valid requests being rejected. In one phone's case the INVITEs are rejected with a 404. In another case the INVITEs are accepted but subsequent CANCELs and BYEs are rejected with a 404.
The problem only occurs when the phone is placed behind a NAT. It appears that the new firmware requires the request to arrive with the control port used by the phone in the request URI otherwise it rejects it. The rejection debug messages are along the lines of:
Unknown address in Request URI
Port Mismatch(UDP), URL Port: 60382, Port Used: 5060
sipSPICheckRequest: Request URI Not Found
SIPTaskProcessSIPMessage: Error: sipSPICheckRequest() returned error.
Following which a 404 Not Found response is sent.
I suspect that if the incoming request URI arrived at the phone with the control port it would be accepted. However that is going to be impossible in a lot of cases where the port will get changed by NAT or an ALG.
This behaviours seems to be a new problem and a number of older firmwares tried do not exhibit. Also different devices such as a Polycom IP500, Xten softphone, Netgear TA612V are all working ok behind the same NAPT the 7960 has problems with.
Has anybody else encountered this behaviour or know of a configuration option that can make the URI matching in incoming requests less aggressive? I've tried all the combinations of: nat_enable, nat_address and nat_received_processing to no avail.