mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
PJSIP: Handle headers in a list appropriately
The PJSIP header parsing function (pjsip_parse_hdr) can generate more than one header instance from a single header field. These header instances exist as a list attached to the returned header and must be handled appropriately when they are added to a message or else only the first header instance will be used. This changes the linked list functions used in outbound proxy code to merge the lists properly. ........ Merged revisions 406020 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@406022 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1539,7 +1539,7 @@ pjsip_dialog *ast_sip_create_dialog_uac(const struct ast_sip_endpoint *endpoint,
|
||||
pjsip_dlg_terminate(dlg);
|
||||
return NULL;
|
||||
}
|
||||
pj_list_push_back(&route_set, route);
|
||||
pj_list_insert_nodes_before(&route_set, route);
|
||||
|
||||
pjsip_dlg_set_route_set(dlg, &route_set);
|
||||
}
|
||||
@@ -1901,7 +1901,7 @@ int ast_sip_set_outbound_proxy(pjsip_tx_data *tdata, const char *proxy)
|
||||
return -1;
|
||||
}
|
||||
|
||||
pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)route);
|
||||
pj_list_insert_nodes_before(&tdata->msg->hdr, (pjsip_hdr*)route);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -776,7 +776,7 @@ static int sip_outbound_registration_regc_alloc(void *data)
|
||||
if (!(route = pjsip_parse_hdr(pjsip_regc_get_pool(registration->state->client_state->client), &ROUTE_HNAME, tmp.ptr, tmp.slen, NULL))) {
|
||||
return -1;
|
||||
}
|
||||
pj_list_push_back(&route_set, route);
|
||||
pj_list_insert_nodes_before(&route_set, route);
|
||||
|
||||
pjsip_regc_set_route_set(registration->state->client_state->client, &route_set);
|
||||
}
|
||||
|
Reference in New Issue
Block a user