33 #include "asterisk/res_pjsip.h"
34 #include "asterisk/res_pjsip_session.h"
36 #define DEFAULT_LANGUAGE "en"
37 #define DEFAULT_ENCODING "identity"
39 static int options_incoming_request(
struct ast_sip_session *session, pjsip_rx_data *rdata)
44 pjsip_endpoint *endpt = ast_sip_get_pjsip_endpoint();
46 status = pjsip_dlg_create_response(session->
inv_session->dlg, rdata, 200, NULL,&tdata);
47 if (status != PJ_SUCCESS) {
48 ast_log(LOG_ERROR,
"Unable to create response (%d)\n", status);
53 if ((hdr = pjsip_endpt_get_capability(endpt, PJSIP_H_ACCEPT, NULL))) {
54 pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)pjsip_hdr_clone(tdata->pool, hdr));
56 if ((hdr = pjsip_endpt_get_capability(endpt, PJSIP_H_ALLOW, NULL))) {
57 pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)pjsip_hdr_clone(tdata->pool, hdr));
59 if ((hdr = pjsip_endpt_get_capability(endpt, PJSIP_H_SUPPORTED, NULL))) {
60 pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)pjsip_hdr_clone(tdata->pool, hdr));
68 ast_sip_add_header(tdata,
"Accept-Encoding", DEFAULT_ENCODING);
69 ast_sip_add_header(tdata,
"Accept-Language", DEFAULT_LANGUAGE);
71 status = pjsip_dlg_send_response(session->
inv_session->dlg, pjsip_rdata_get_tsx(rdata), tdata);
72 if (status != PJ_SUCCESS) {
73 ast_log(LOG_ERROR,
"Unable to send response (%d)\n", status);
81 .incoming_request = options_incoming_request,
84 static int load_module(
void)
86 ast_sip_session_register_supplement(&dlg_options_supplement);
91 static int unload_module(
void)
93 ast_sip_session_unregister_supplement(&dlg_options_supplement);
97 AST_MODULE_INFO(
ASTERISK_GPL_KEY, AST_MODFLAG_LOAD_ORDER,
"SIP OPTIONS in dialog handler",
98 .support_level = AST_MODULE_SUPPORT_CORE,
100 .unload = unload_module,
102 .requires =
"res_pjsip,res_pjsip_session",
Asterisk main include file. File version handling, generic pbx functions.
struct pjsip_inv_session * inv_session
A structure describing a SIP session.
A supplement to SIP message processing.
#define ASTERISK_GPL_KEY
The text the key() function should return.
Asterisk module definitions.