mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 11:25:35 +00:00
res_pjsip: Log IPv6 addresses correctly
Both pjsip_tx_data.tp_info.dst_name and pjsip_rx_data.pkt_info.src_name store IPv6 addresses without enclosing brackets. This causes some log output to be confusing because it is difficult to separate the IPv6 address from a port specification. * Use pj_sockaddr_print() along with pjsip_tx_data.tp_info.dst_addr and pjsip_rx_data.pkt_info.src_addr where possible for consistent IPv6 output. * When a pj_sockaddr is not available, explicitly wrap IPv6 addresses in brackets. * When assigning pjsip_rx_data.pkt_info.src_name ourselves, make sure to also set pjsip_rx_data.pkt_info.src_addr. Change-Id: I5cfe997ced7883862a12b9c7d8551d76ae02fcf8
This commit is contained in:
@@ -429,12 +429,23 @@ static pj_bool_t websocket_on_rx_msg(pjsip_rx_data *rdata)
|
||||
pjsip_sip_uri *uri = pjsip_uri_get_uri(contact->uri);
|
||||
const pj_str_t *txp_str = &STR_WS;
|
||||
|
||||
ast_debug(4, "%s re-writing Contact URI from %.*s:%d%s%.*s to %s:%d;transport=%s\n",
|
||||
pjsip_rx_data_get_info(rdata),
|
||||
(int)pj_strlen(&uri->host), pj_strbuf(&uri->host), uri->port,
|
||||
pj_strlen(&uri->transport_param) ? ";transport=" : "",
|
||||
(int)pj_strlen(&uri->transport_param), pj_strbuf(&uri->transport_param),
|
||||
rdata->pkt_info.src_name ?: "", rdata->pkt_info.src_port, pj_strbuf(txp_str));
|
||||
if (DEBUG_ATLEAST(4)) {
|
||||
char src_addr_buffer[AST_SOCKADDR_BUFLEN];
|
||||
const char *ipv6_s = "", *ipv6_e = "";
|
||||
|
||||
if (pj_strchr(&uri->host, ':')) {
|
||||
ipv6_s = "[";
|
||||
ipv6_e = "]";
|
||||
}
|
||||
|
||||
ast_log(LOG_DEBUG, "%s re-writing Contact URI from %s%.*s%s:%d%s%.*s to %s;transport=%s\n",
|
||||
pjsip_rx_data_get_info(rdata),
|
||||
ipv6_s, (int) pj_strlen(&uri->host), pj_strbuf(&uri->host), ipv6_e, uri->port,
|
||||
pj_strlen(&uri->transport_param) ? ";transport=" : "",
|
||||
(int) pj_strlen(&uri->transport_param), pj_strbuf(&uri->transport_param),
|
||||
pj_sockaddr_print(&rdata->pkt_info.src_addr, src_addr_buffer, sizeof(src_addr_buffer), 3),
|
||||
pj_strbuf(txp_str));
|
||||
}
|
||||
|
||||
pj_cstr(&uri->host, rdata->pkt_info.src_name);
|
||||
uri->port = rdata->pkt_info.src_port;
|
||||
|
Reference in New Issue
Block a user