<synopsis>Authentication object used for outbound requests</synopsis>
</configOption>
<configOption name="outbound_proxy">
- <synopsis>Proxy through which to send requests</synopsis>
+ <synopsis>Proxy through which to send requests, a full SIP URI must be provided</synopsis>
</configOption>
<configOption name="rewrite_contact">
<synopsis>Allow Contact header to be rewritten with the source IP address-port</synopsis>
pj_strdup2_with_null(dlg->pool, &tmp, outbound_proxy);
if (!(route = pjsip_parse_hdr(dlg->pool, &ROUTE_HNAME, tmp.ptr, tmp.slen, NULL))) {
+ dlg->sess_count--;
pjsip_dlg_terminate(dlg);
return NULL;
}
return -1;
}
+ if (!ast_strlen_zero(endpoint->outbound_proxy)) {
+ pj_pool_t *pool = pjsip_endpt_create_pool(ast_sip_get_pjsip_endpoint(), "Outbound Proxy Validation", 256, 256);
+ static const pj_str_t ROUTE_HNAME = { "Route", 5 };
+ pj_str_t tmp;
+
+ if (!pool) {
+ ast_log(LOG_ERROR, "Could not allocate pool for outbound proxy validation on '%s'\n",
+ ast_sorcery_object_get_id(endpoint));
+ return -1;
+ }
+
+ pj_strdup2_with_null(pool, &tmp, endpoint->outbound_proxy);
+ if (!pjsip_parse_hdr(pool, &ROUTE_HNAME, tmp.ptr, tmp.slen, NULL)) {
+ ast_log(LOG_ERROR, "Invalid outbound proxy '%s' specified on endpoint '%s'\n",
+ endpoint->outbound_proxy, ast_sorcery_object_get_id(endpoint));
+ pjsip_endpt_release_pool(ast_sip_get_pjsip_endpoint(), pool);
+ return -1;
+ }
+
+ pjsip_endpt_release_pool(ast_sip_get_pjsip_endpoint(), pool);
+ }
+
return 0;
}