mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-21 12:54:56 +00:00
res_pjsip_nat: Don't rewrite Contact on REGISTER responses.
When sending a SIP response to an incoming REGISTER request we don't want to change the Contact header as it will contain the Contacts registered to the AOR and not our own Contact URI. ASTERISK-29235 Change-Id: I35a0723545281dd01fcd5cae497baab58720478c
This commit is contained in:
committed by
Joshua Colp
parent
3e5b9e3952
commit
2c1b6b7b15
@@ -432,12 +432,24 @@ static pj_status_t process_nat(pjsip_tx_data *tdata)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!ast_sockaddr_isnull(&transport_state->external_signaling_address)) {
|
if (!ast_sockaddr_isnull(&transport_state->external_signaling_address)) {
|
||||||
/* Update the contact header with the external address */
|
pjsip_cseq_hdr *cseq = PJSIP_MSG_CSEQ_HDR(tdata->msg);
|
||||||
if (uri || (uri = nat_get_contact_sip_uri(tdata))) {
|
|
||||||
pj_strdup2(tdata->pool, &uri->host, ast_sockaddr_stringify_host(&transport_state->external_signaling_address));
|
/* Update the Contact header with the external address. We only do this if
|
||||||
if (transport->external_signaling_port) {
|
* a CSeq is not present (which should not happen - but we are extra safe),
|
||||||
uri->port = transport->external_signaling_port;
|
* if a request is being sent, or if a response is sent that is not a response
|
||||||
ast_debug(4, "Re-wrote Contact URI port to %d\n", uri->port);
|
* to a REGISTER. We specifically don't do this for a response to a REGISTER
|
||||||
|
* as the Contact headers would contain the registered Contacts, and not our
|
||||||
|
* own Contact.
|
||||||
|
*/
|
||||||
|
if (!cseq || tdata->msg->type == PJSIP_REQUEST_MSG ||
|
||||||
|
pjsip_method_cmp(&cseq->method, &pjsip_register_method)) {
|
||||||
|
/* We can only rewrite the URI when one is present */
|
||||||
|
if (uri || (uri = nat_get_contact_sip_uri(tdata))) {
|
||||||
|
pj_strdup2(tdata->pool, &uri->host, ast_sockaddr_stringify_host(&transport_state->external_signaling_address));
|
||||||
|
if (transport->external_signaling_port) {
|
||||||
|
uri->port = transport->external_signaling_port;
|
||||||
|
ast_debug(4, "Re-wrote Contact URI port to %d\n", uri->port);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user