app_queue: (Breaking change) shared_lastcall and autofill default to no

If your queues.conf had _no_ [general] section, they would default to
'yes'. Now, they always default to 'no'.

(Actually, commit ed615afb7e already
partially fixed it for shared_lastcall.)

ASTERISK-28951

Change-Id: Ic39d8a0202906bc454194368bbfbae62990fe5f6
18.0
Walter Doekes 5 years ago committed by Joshua Colp
parent 9bd1d686a1
commit 312c23b0e1

@ -1463,34 +1463,34 @@ static char *app_qupd = "QueueUpdate";
static const char * const pm_family = "Queue/PersistentMembers"; static const char * const pm_family = "Queue/PersistentMembers";
/*! \brief queues.conf [general] option */ /*! \brief queues.conf [general] option */
static int queue_persistent_members = 0; static int queue_persistent_members;
/*! \brief queues.conf per-queue weight option */ /*! \brief Records that one or more queues use weight */
static int use_weight = 0; static int use_weight;
/*! \brief queues.conf [general] option */ /*! \brief queues.conf [general] option */
static int autofill_default = 1; static int autofill_default;
/*! \brief queues.conf [general] option */ /*! \brief queues.conf [general] option */
static int montype_default = 0; static int montype_default;
/*! \brief queues.conf [general] option */ /*! \brief queues.conf [general] option */
static int shared_lastcall = 0; static int shared_lastcall;
/*! \brief queuesrules.conf [general] option */ /*! \brief queuesrules.conf [general] option */
static int realtime_rules = 0; static int realtime_rules;
/*! \brief Subscription to device state change messages */ /*! \brief Subscription to device state change messages */
static struct stasis_subscription *device_state_sub; static struct stasis_subscription *device_state_sub;
/*! \brief queues.conf [general] option */ /*! \brief queues.conf [general] option */
static int update_cdr = 0; static int update_cdr;
/*! \brief queues.conf [general] option */ /*! \brief queues.conf [general] option */
static int negative_penalty_invalid = 0; static int negative_penalty_invalid;
/*! \brief queues.conf [general] option */ /*! \brief queues.conf [general] option */
static int log_membername_as_agent = 0; static int log_membername_as_agent;
/*! \brief name of the ringinuse field in the realtime database */ /*! \brief name of the ringinuse field in the realtime database */
static char *realtime_ringinuse_field; static char *realtime_ringinuse_field;
@ -9110,14 +9110,19 @@ static struct ast_custom_function queuememberpenalty_function = {
.write = queue_function_memberpenalty_write, .write = queue_function_memberpenalty_write,
}; };
/*! Reset the global queue rules parameters even if there is no "general" section of queuerules.conf */
static void queue_rules_reset_global_params(void)
{
realtime_rules = 0;
}
/*! Set the global queue rules parameters as defined in the "general" section of queuerules.conf */ /*! Set the global queue rules parameters as defined in the "general" section of queuerules.conf */
static void queue_rules_set_global_params(struct ast_config *cfg) static void queue_rules_set_global_params(struct ast_config *cfg)
{ {
const char *general_val = NULL; const char *general_val = NULL;
realtime_rules = 0; if ((general_val = ast_variable_retrieve(cfg, "general", "realtime_rules"))) {
if ((general_val = ast_variable_retrieve(cfg, "general", "realtime_rules"))) { realtime_rules = ast_true(general_val);
realtime_rules = ast_true(general_val); }
}
} }
/*! \brief Reload the rules defined in queuerules.conf /*! \brief Reload the rules defined in queuerules.conf
@ -9152,6 +9157,7 @@ static int reload_queue_rules(int reload)
ast_free(pr_iter); ast_free(pr_iter);
ast_free(rl_iter); ast_free(rl_iter);
} }
queue_rules_reset_global_params();
while ((rulecat = ast_category_browse(cfg, rulecat))) { while ((rulecat = ast_category_browse(cfg, rulecat))) {
if (!strcasecmp(rulecat, "general")) { if (!strcasecmp(rulecat, "general")) {
queue_rules_set_global_params(cfg); queue_rules_set_global_params(cfg);
@ -9183,36 +9189,41 @@ static int reload_queue_rules(int reload)
return AST_MODULE_LOAD_SUCCESS; return AST_MODULE_LOAD_SUCCESS;
} }
/*! Always set the global queue defaults, even if there is no "general" section in queues.conf */
static void queue_reset_global_params(void)
{
queue_persistent_members = 0;
autofill_default = 0;
montype_default = 0;
update_cdr = 0;
shared_lastcall = 0;
negative_penalty_invalid = 0;
log_membername_as_agent = 0;
}
/*! Set the global queue parameters as defined in the "general" section of queues.conf */ /*! Set the global queue parameters as defined in the "general" section of queues.conf */
static void queue_set_global_params(struct ast_config *cfg) static void queue_set_global_params(struct ast_config *cfg)
{ {
const char *general_val = NULL; const char *general_val = NULL;
queue_persistent_members = 0;
if ((general_val = ast_variable_retrieve(cfg, "general", "persistentmembers"))) { if ((general_val = ast_variable_retrieve(cfg, "general", "persistentmembers"))) {
queue_persistent_members = ast_true(general_val); queue_persistent_members = ast_true(general_val);
} }
autofill_default = 0;
if ((general_val = ast_variable_retrieve(cfg, "general", "autofill"))) { if ((general_val = ast_variable_retrieve(cfg, "general", "autofill"))) {
autofill_default = ast_true(general_val); autofill_default = ast_true(general_val);
} }
montype_default = 0;
if ((general_val = ast_variable_retrieve(cfg, "general", "monitor-type"))) { if ((general_val = ast_variable_retrieve(cfg, "general", "monitor-type"))) {
if (!strcasecmp(general_val, "mixmonitor")) if (!strcasecmp(general_val, "mixmonitor"))
montype_default = 1; montype_default = 1;
} }
update_cdr = 0;
if ((general_val = ast_variable_retrieve(cfg, "general", "updatecdr"))) { if ((general_val = ast_variable_retrieve(cfg, "general", "updatecdr"))) {
update_cdr = ast_true(general_val); update_cdr = ast_true(general_val);
} }
shared_lastcall = 0;
if ((general_val = ast_variable_retrieve(cfg, "general", "shared_lastcall"))) { if ((general_val = ast_variable_retrieve(cfg, "general", "shared_lastcall"))) {
shared_lastcall = ast_true(general_val); shared_lastcall = ast_true(general_val);
} }
negative_penalty_invalid = 0;
if ((general_val = ast_variable_retrieve(cfg, "general", "negative_penalty_invalid"))) { if ((general_val = ast_variable_retrieve(cfg, "general", "negative_penalty_invalid"))) {
negative_penalty_invalid = ast_true(general_val); negative_penalty_invalid = ast_true(general_val);
} }
log_membername_as_agent = 0;
if ((general_val = ast_variable_retrieve(cfg, "general", "log_membername_as_agent"))) { if ((general_val = ast_variable_retrieve(cfg, "general", "log_membername_as_agent"))) {
log_membername_as_agent = ast_true(general_val); log_membername_as_agent = ast_true(general_val);
} }
@ -9547,6 +9558,7 @@ static int reload_queues(int reload, struct ast_flags *mask, const char *queuena
/* Chug through config file. */ /* Chug through config file. */
cat = NULL; cat = NULL;
queue_reset_global_params();
while ((cat = ast_category_browse(cfg, cat)) ) { while ((cat = ast_category_browse(cfg, cat)) ) {
if (!strcasecmp(cat, "general") && queue_reload) { if (!strcasecmp(cat, "general") && queue_reload) {
queue_set_global_params(cfg); queue_set_global_params(cfg);

@ -23,7 +23,7 @@ persistentmembers = yes
; no more available members or no more waiting callers. This is ; no more available members or no more waiting callers. This is
; probably more along the lines of how a queue should work and ; probably more along the lines of how a queue should work and
; in most cases, you will want to enable this behavior. If you ; in most cases, you will want to enable this behavior. If you
; do not specify or comment out this option, it will default to yes. ; do not specify or comment out this option, it will default to no.
; ;
;autofill = no ;autofill = no
; ;

@ -0,0 +1,6 @@
Subject: app_queue
Master-Only: true
If they are not specified in [general], "shared_lastcall" and "autofill"
now always default to OFF. Before this version, they would be off ('no') if
queues.conf did not have a [general] section, but on ('yes') if it did.
Loading…
Cancel
Save