Verify includes, and give warnings if invalid (bug #429)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1667 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.0
Mark Spencer 22 years ago
parent e425ba6c0e
commit 4d0e046a06

@ -376,6 +376,13 @@ int ast_context_remove_include(char *context, char *include, char *registrar);
*/
int ast_context_remove_include2(struct ast_context *con, char *include, char *registrar);
//! Verifies includes in an ast_contect structure
/*!
* \param con context in which to verify the includes
* Returns 0 if no problems found, -1 if there were any missing context
*/
int ast_context_verify_includes(struct ast_context *con);
//! Add a switch
/*!
* \param context context to which to add the switch

14
pbx.c

@ -4644,3 +4644,17 @@ struct ast_ignorepat *ast_walk_context_ignorepats(struct ast_context *con,
else
return ip->next;
}
int ast_context_verify_includes(struct ast_context *con)
{
struct ast_include *inc;
int res = 0;
for (inc = ast_walk_context_includes(con, NULL); inc; inc = ast_walk_context_includes(con, inc))
if (!ast_context_find(inc->rname)) {
res = -1;
ast_log(LOG_WARNING, "Context '%s' tries includes non-existant context '%s'\n",
ast_get_context_name(con), inc->rname);
}
return res;
}

@ -1653,6 +1653,10 @@ static int pbx_load_module(void)
ast_destroy(cfg);
}
ast_merge_contexts_and_delete(&local_contexts,registrar);
for (con = ast_walk_contexts(NULL); con; con = ast_walk_contexts(con))
ast_context_verify_includes(con);
return 0;
}

Loading…
Cancel
Save