mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-22 20:56:39 +00:00
Merge "res_pjsip: Added a norefersub configuration setting"
This commit is contained in:
@@ -1938,6 +1938,9 @@
|
||||
</para></warning>
|
||||
</description>
|
||||
</configOption>
|
||||
<configOption name="norefersub" default="yes">
|
||||
<synopsis>Advertise support for RFC4488 REFER subscription suppression</synopsis>
|
||||
</configOption>
|
||||
</configObject>
|
||||
</configFile>
|
||||
</configInfo>
|
||||
|
@@ -52,6 +52,7 @@
|
||||
#define DEFAULT_USE_CALLERID_CONTACT 0
|
||||
#define DEFAULT_SEND_CONTACT_STATUS_ON_UPDATE_REGISTRATION 0
|
||||
#define DEFAULT_TASKPROCESSOR_OVERLOAD_TRIGGER TASKPROCESSOR_OVERLOAD_TRIGGER_GLOBAL
|
||||
#define DEFAULT_NOREFERSUB 1
|
||||
|
||||
/*!
|
||||
* \brief Cached global config object
|
||||
@@ -113,6 +114,8 @@ struct global_config {
|
||||
unsigned int send_contact_status_on_update_registration;
|
||||
/*! Trigger the distributor should use to pause accepting new dialogs */
|
||||
enum ast_sip_taskprocessor_overload_trigger overload_trigger;
|
||||
/*! Nonzero if norefersub is to be sent in Supported header */
|
||||
unsigned int norefersub;
|
||||
};
|
||||
|
||||
static void global_destructor(void *obj)
|
||||
@@ -501,6 +504,21 @@ enum ast_sip_taskprocessor_overload_trigger ast_sip_get_taskprocessor_overload_t
|
||||
return trigger;
|
||||
}
|
||||
|
||||
unsigned int ast_sip_get_norefersub(void)
|
||||
{
|
||||
unsigned int norefersub;
|
||||
struct global_config *cfg;
|
||||
|
||||
cfg = get_global_cfg();
|
||||
if (!cfg) {
|
||||
return DEFAULT_NOREFERSUB;
|
||||
}
|
||||
|
||||
norefersub = cfg->norefersub;
|
||||
ao2_ref(cfg, -1);
|
||||
return norefersub;
|
||||
}
|
||||
|
||||
static int overload_trigger_handler(const struct aco_option *opt,
|
||||
struct ast_variable *var, void *obj)
|
||||
{
|
||||
@@ -704,6 +722,9 @@ int ast_sip_initialize_sorcery_global(void)
|
||||
ast_sorcery_object_field_register_custom(sorcery, "global", "taskprocessor_overload_trigger",
|
||||
overload_trigger_map[DEFAULT_TASKPROCESSOR_OVERLOAD_TRIGGER],
|
||||
overload_trigger_handler, overload_trigger_to_str, NULL, 0, 0);
|
||||
ast_sorcery_object_field_register(sorcery, "global", "norefersub",
|
||||
DEFAULT_NOREFERSUB ? "yes" : "no",
|
||||
OPT_YESNO_T, 1, FLDSET(struct global_config, norefersub));
|
||||
|
||||
if (ast_sorcery_instance_observer_add(sorcery, &observer_callbacks_global)) {
|
||||
return -1;
|
||||
|
@@ -1230,7 +1230,10 @@ static int load_module(void)
|
||||
|
||||
pjsip_replaces_init_module(ast_sip_get_pjsip_endpoint());
|
||||
pjsip_xfer_init_module(ast_sip_get_pjsip_endpoint());
|
||||
pjsip_endpt_add_capability(ast_sip_get_pjsip_endpoint(), NULL, PJSIP_H_SUPPORTED, NULL, 1, &str_norefersub);
|
||||
|
||||
if (ast_sip_get_norefersub()) {
|
||||
pjsip_endpt_add_capability(ast_sip_get_pjsip_endpoint(), NULL, PJSIP_H_SUPPORTED, NULL, 1, &str_norefersub);
|
||||
}
|
||||
|
||||
ast_sip_register_service(&refer_progress_module);
|
||||
ast_sip_session_register_supplement(&refer_supplement);
|
||||
|
Reference in New Issue
Block a user