static int update_connected_line_information(void *data)
{
RAII_VAR(struct ast_sip_session *, session, data, ao2_cleanup);
+ struct ast_party_id connected_id;
if ((ast_channel_state(session->channel) != AST_STATE_UP) && (session->inv_session->role == PJSIP_UAS_ROLE)) {
int response_code = 0;
method = AST_SIP_SESSION_REFRESH_METHOD_UPDATE;
}
- ast_sip_session_refresh(session, NULL, NULL, NULL, method, 0);
+ connected_id = ast_channel_connected_effective_id(session->channel);
+ if ((session->endpoint->id.send_pai || session->endpoint->id.send_rpid) &&
+ (session->endpoint->id.trust_outbound ||
+ ((connected_id.name.presentation & AST_PRES_RESTRICTION) == AST_PRES_ALLOWED &&
+ (connected_id.number.presentation & AST_PRES_RESTRICTION) == AST_PRES_ALLOWED))) {
+ ast_sip_session_refresh(session, NULL, NULL, NULL, method, 1);
+ }
}
return 0;
modify_id_header(tdata->pool, from, &connected_id);
modify_id_header(dlg->pool, dlg->local.info, &connected_id);
- if (should_queue_connected_line_update(session, &session->endpoint->id.self)) {
- queue_connected_line_update(session, &session->endpoint->id.self);
- }
}
add_id_headers(session, tdata, &connected_id);
}
* \brief Session supplement for outgoing INVITE response
*
* This will add P-Asserted-Identity and Remote-Party-ID headers if necessary
- *
+ *
* \param session The session on which the INVITE response is to be sent
* \param tdata The outbound INVITE response
*/