summaryrefslogtreecommitdiff
path: root/res/res_pjsip.c
diff options
context:
space:
mode:
authorzuul <zuul@gerrit.asterisk.org>2016-03-30 10:51:42 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2016-03-30 10:51:42 -0500
commit23d2a561d55bc226414dc839544138d77b49adfa (patch)
tree9f250d28c1acd1dc57aeac3a994eee0f94a6b168 /res/res_pjsip.c
parentc4064727d208d61dc29721c52f450f67eb22a445 (diff)
parentc971a6436646225a159c644644db91ef6de46923 (diff)
Merge "res_pjsip/pjsip_options: Fix From generation on outgoing OPTIONS"
Diffstat (limited to 'res/res_pjsip.c')
-rw-r--r--res/res_pjsip.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/res/res_pjsip.c b/res/res_pjsip.c
index 67d8dce38..b9d6cb6de 100644
--- a/res/res_pjsip.c
+++ b/res/res_pjsip.c
@@ -2862,6 +2862,7 @@ static int create_out_of_dialog_request(const pjsip_method *method, struct ast_s
pj_pool_t *pool;
pjsip_tpselector selector = { .type = PJSIP_TPSELECTOR_NONE, };
pjsip_uri *sip_uri;
+ const char *fromuser;
if (ast_strlen_zero(uri)) {
if (!endpoint && (!contact || ast_strlen_zero(contact->uri))) {
@@ -2908,7 +2909,8 @@ static int create_out_of_dialog_request(const pjsip_method *method, struct ast_s
return -1;
}
- if (sip_dialog_create_from(pool, &from, endpoint ? endpoint->fromuser : NULL,
+ fromuser = endpoint ? (!ast_strlen_zero(endpoint->fromuser) ? endpoint->fromuser : ast_sorcery_object_get_id(endpoint)) : NULL;
+ if (sip_dialog_create_from(pool, &from, fromuser,
endpoint ? endpoint->fromdomain : NULL, &remote_uri, &selector)) {
ast_log(LOG_ERROR, "Unable to create From header for %.*s request to endpoint %s\n",
(int) pj_strlen(&method->name), pj_strbuf(&method->name),
@@ -3203,6 +3205,7 @@ static pj_status_t endpt_send_request(struct ast_sip_endpoint *endpoint,
struct send_request_wrapper *req_wrapper;
pj_status_t ret_val;
pjsip_endpoint *endpt = ast_sip_get_pjsip_endpoint();
+ pjsip_tpselector selector = { .type = PJSIP_TPSELECTOR_NONE, };
/* Create wrapper to detect if the callback was actually called on an error. */
req_wrapper = ao2_alloc(sizeof(*req_wrapper), send_request_wrapper_destructor);
@@ -3253,6 +3256,11 @@ static pj_status_t endpt_send_request(struct ast_sip_endpoint *endpoint,
*/
ao2_ref(req_wrapper, +1);
+ if (endpoint) {
+ sip_get_tpselector_from_endpoint(endpoint, &selector);
+ pjsip_tx_data_set_transport(tdata, &selector);
+ }
+
ret_val = pjsip_endpt_send_request(endpt, tdata, -1, req_wrapper, endpt_send_request_cb);
if (ret_val != PJ_SUCCESS) {
char errmsg[PJ_ERR_MSG_SIZE];