mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 10:33:13 +00:00
Merge "res_pjsip/chan_sip: Advertise 'ws' in the SIP URI transport parameter"
This commit is contained in:
@@ -14158,6 +14158,7 @@ static void build_contact(struct sip_pvt *p, struct sip_request *req, int incomi
|
|||||||
char tmp[SIPBUFSIZE];
|
char tmp[SIPBUFSIZE];
|
||||||
char *user = ast_uri_encode(p->exten, tmp, sizeof(tmp), ast_uri_sip_user);
|
char *user = ast_uri_encode(p->exten, tmp, sizeof(tmp), ast_uri_sip_user);
|
||||||
int use_sips;
|
int use_sips;
|
||||||
|
char *transport = ast_strdupa(sip_get_transport(p->socket.type));
|
||||||
|
|
||||||
if (incoming) {
|
if (incoming) {
|
||||||
use_sips = uas_sips_contact(req);
|
use_sips = uas_sips_contact(req);
|
||||||
@@ -14172,7 +14173,7 @@ static void build_contact(struct sip_pvt *p, struct sip_request *req, int incomi
|
|||||||
} else {
|
} else {
|
||||||
ast_string_field_build(p, our_contact, "<%s:%s%s%s;transport=%s>",
|
ast_string_field_build(p, our_contact, "<%s:%s%s%s;transport=%s>",
|
||||||
use_sips ? "sips" : "sip", user, ast_strlen_zero(user) ? "" : "@",
|
use_sips ? "sips" : "sip", user, ast_strlen_zero(user) ? "" : "@",
|
||||||
ast_sockaddr_stringify_remote(&p->ourip), sip_get_transport(p->socket.type));
|
ast_sockaddr_stringify_remote(&p->ourip), ast_str_to_lower(transport));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -378,7 +378,6 @@ static void websocket_cb(struct ast_websocket *session, struct ast_variable *par
|
|||||||
static pj_bool_t websocket_on_rx_msg(pjsip_rx_data *rdata)
|
static pj_bool_t websocket_on_rx_msg(pjsip_rx_data *rdata)
|
||||||
{
|
{
|
||||||
static const pj_str_t STR_WS = { "ws", 2 };
|
static const pj_str_t STR_WS = { "ws", 2 };
|
||||||
static const pj_str_t STR_WSS = { "wss", 3 };
|
|
||||||
pjsip_contact_hdr *contact;
|
pjsip_contact_hdr *contact;
|
||||||
|
|
||||||
long type = rdata->tp_info.transport->key.type;
|
long type = rdata->tp_info.transport->key.type;
|
||||||
@@ -395,7 +394,7 @@ static pj_bool_t websocket_on_rx_msg(pjsip_rx_data *rdata)
|
|||||||
uri->port = rdata->pkt_info.src_port;
|
uri->port = rdata->pkt_info.src_port;
|
||||||
ast_debug(4, "Re-wrote Contact URI host/port to %.*s:%d\n",
|
ast_debug(4, "Re-wrote Contact URI host/port to %.*s:%d\n",
|
||||||
(int)pj_strlen(&uri->host), pj_strbuf(&uri->host), uri->port);
|
(int)pj_strlen(&uri->host), pj_strbuf(&uri->host), uri->port);
|
||||||
pj_strdup(rdata->tp_info.pool, &uri->transport_param, (type == (long)transport_type_ws) ? &STR_WS : &STR_WSS);
|
pj_strdup(rdata->tp_info.pool, &uri->transport_param, &STR_WS);
|
||||||
}
|
}
|
||||||
|
|
||||||
rdata->msg_info.via->rport_param = 0;
|
rdata->msg_info.via->rport_param = 0;
|
||||||
@@ -431,7 +430,7 @@ static int load_module(void)
|
|||||||
CHECK_PJSIP_MODULE_LOADED();
|
CHECK_PJSIP_MODULE_LOADED();
|
||||||
|
|
||||||
pjsip_transport_register_type(PJSIP_TRANSPORT_RELIABLE, "WS", 5060, &transport_type_ws);
|
pjsip_transport_register_type(PJSIP_TRANSPORT_RELIABLE, "WS", 5060, &transport_type_ws);
|
||||||
pjsip_transport_register_type(PJSIP_TRANSPORT_RELIABLE | PJSIP_TRANSPORT_SECURE, "WSS", 5060, &transport_type_wss);
|
pjsip_transport_register_type(PJSIP_TRANSPORT_RELIABLE | PJSIP_TRANSPORT_SECURE, "WS", 5060, &transport_type_wss);
|
||||||
|
|
||||||
if (ast_sip_register_service(&websocket_module) != PJ_SUCCESS) {
|
if (ast_sip_register_service(&websocket_module) != PJ_SUCCESS) {
|
||||||
return AST_MODULE_LOAD_DECLINE;
|
return AST_MODULE_LOAD_DECLINE;
|
||||||
|
Reference in New Issue
Block a user