struct ast_variable *v, *last = NULL;
int new_calendar = 0;
- if (!(cal = find_calendar(cat))) {
+ cal = find_calendar(cat);
+ if (cal && cal->fetch_again_at_reload) {
+ /** Create new calendar, old will be removed during reload */
+ cal = unref_calendar(cal);
+ }
+ if (!cal) {
new_calendar = 1;
if (!(cal = ao2_alloc(sizeof(*cal), calendar_destructor))) {
ast_log(LOG_ERROR, "Could not allocate calendar structure. Stopping.\n");
}
}
- if (new_calendar || cal->fetch_again_at_reload) {
+ if (new_calendar) {
cal->thread = AST_PTHREADT_NULL;
ast_cond_init(&cal->unload, NULL);
ao2_link(calendars, cal);