@ -361,6 +361,7 @@ struct call_queue {
unsigned int strategy : 3 ;
unsigned int strategy : 3 ;
unsigned int maskmemberstatus : 1 ;
unsigned int maskmemberstatus : 1 ;
unsigned int realtime : 1 ;
unsigned int realtime : 1 ;
unsigned int found : 1 ;
int announcefrequency ; /*!< How often to announce their position */
int announcefrequency ; /*!< How often to announce their position */
int periodicannouncefrequency ; /*!< How often to play periodic announcement */
int periodicannouncefrequency ; /*!< How often to play periodic announcement */
int roundingseconds ; /*!< How many seconds do we round to? */
int roundingseconds ; /*!< How many seconds do we round to? */
@ -720,6 +721,7 @@ static void init_queue(struct call_queue *q)
q - > periodicannouncefrequency = 0 ;
q - > periodicannouncefrequency = 0 ;
q - > members = ao2_container_alloc ( 37 , member_hash_fn , member_cmp_fn ) ;
q - > members = ao2_container_alloc ( 37 , member_hash_fn , member_cmp_fn ) ;
q - > membercount = 0 ;
q - > membercount = 0 ;
q - > found = 1 ;
ast_copy_string ( q - > sound_next , " queue-youarenext " , sizeof ( q - > sound_next ) ) ;
ast_copy_string ( q - > sound_next , " queue-youarenext " , sizeof ( q - > sound_next ) ) ;
ast_copy_string ( q - > sound_thereare , " queue-thereare " , sizeof ( q - > sound_thereare ) ) ;
ast_copy_string ( q - > sound_thereare , " queue-thereare " , sizeof ( q - > sound_thereare ) ) ;
ast_copy_string ( q - > sound_calls , " queue-callswaiting " , sizeof ( q - > sound_calls ) ) ;
ast_copy_string ( q - > sound_calls , " queue-callswaiting " , sizeof ( q - > sound_calls ) ) ;
@ -1072,6 +1074,7 @@ static struct call_queue *find_queue_by_name_rt(const char *queuename, struct as
ast_mutex_unlock ( & q - > lock ) ;
ast_mutex_unlock ( & q - > lock ) ;
return NULL ;
return NULL ;
} else {
} else {
ast_log ( LOG_WARNING , " Static queue '%s' already exists. Not loading from realtime \n " , q - > name ) ;
ast_mutex_unlock ( & q - > lock ) ;
ast_mutex_unlock ( & q - > lock ) ;
return q ;
return q ;
}
}
@ -3862,8 +3865,10 @@ static int reload_queues(void)
use_weight = 0 ;
use_weight = 0 ;
/* Mark all non-realtime queues as dead for the moment */
/* Mark all non-realtime queues as dead for the moment */
AST_LIST_TRAVERSE ( & queues , q , list ) {
AST_LIST_TRAVERSE ( & queues , q , list ) {
if ( ! q - > realtime )
if ( ! q - > realtime ) {
q - > dead = 1 ;
q - > dead = 1 ;
q - > found = 0 ;
}
}
}
/* Chug through config file */
/* Chug through config file */
@ -3898,6 +3903,13 @@ static int reload_queues(void)
if ( q ) {
if ( q ) {
if ( ! new )
if ( ! new )
ast_mutex_lock ( & q - > lock ) ;
ast_mutex_lock ( & q - > lock ) ;
/* Check if a queue with this name already exists */
if ( q - > found ) {
ast_log ( LOG_WARNING , " Queue '%s' already defined! Skipping! \n " , cat ) ;
if ( ! new )
ast_mutex_unlock ( & q - > lock ) ;
continue ;
}
/* Re-initialize the queue, and clear statistics */
/* Re-initialize the queue, and clear statistics */
init_queue ( q ) ;
init_queue ( q ) ;
clear_queue ( q ) ;
clear_queue ( q ) ;