[asterisk-commits] qwell: trunk r92697 - in /trunk: ./ channels/ main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Dec 12 18:18:04 CST 2007
Author: qwell
Date: Wed Dec 12 18:18:04 2007
New Revision: 92697
URL: http://svn.digium.com/view/asterisk?view=rev&rev=92697
Log:
Merged revisions 92696 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
(closes issue #10690)
........
r92696 | qwell | 2007-12-12 18:11:09 -0600 (Wed, 12 Dec 2007) | 7 lines
If a typo is found in a config file, we previous continued on with what was already loaded.
We do not want to do this (see bug below for details).
This makes it so that if a [ is found without a ], the entire config will fail, and nothing in it will be loaded.
Issue 10690.
........
Modified:
trunk/ (props changed)
trunk/channels/chan_h323.c
trunk/channels/chan_sip.c
trunk/main/config.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_h323.c?view=diff&rev=92697&r1=92696&r2=92697
==============================================================================
--- trunk/channels/chan_h323.c (original)
+++ trunk/channels/chan_h323.c Wed Dec 12 18:18:04 2007
@@ -2746,6 +2746,56 @@
AST_CLI_DEFINE(handle_cli_h323_show_tokens, "Show all active call tokens"),
};
+static void delete_users(void)
+{
+ int pruned = 0;
+
+ /* Delete all users */
+ ASTOBJ_CONTAINER_WRLOCK(&userl);
+ ASTOBJ_CONTAINER_TRAVERSE(&userl, 1, do {
+ ASTOBJ_RDLOCK(iterator);
+ ASTOBJ_MARK(iterator);
+ ++pruned;
+ ASTOBJ_UNLOCK(iterator);
+ } while (0) );
+ if (pruned) {
+ ASTOBJ_CONTAINER_PRUNE_MARKED(&userl, oh323_destroy_user);
+ }
+ ASTOBJ_CONTAINER_UNLOCK(&userl);
+
+ ASTOBJ_CONTAINER_WRLOCK(&peerl);
+ ASTOBJ_CONTAINER_TRAVERSE(&peerl, 1, do {
+ ASTOBJ_RDLOCK(iterator);
+ ASTOBJ_MARK(iterator);
+ ASTOBJ_UNLOCK(iterator);
+ } while (0) );
+ ASTOBJ_CONTAINER_UNLOCK(&peerl);
+}
+
+static void delete_aliases(void)
+{
+ int pruned = 0;
+
+ /* Delete all aliases */
+ ASTOBJ_CONTAINER_WRLOCK(&aliasl);
+ ASTOBJ_CONTAINER_TRAVERSE(&aliasl, 1, do {
+ ASTOBJ_RDLOCK(iterator);
+ ASTOBJ_MARK(iterator);
+ ++pruned;
+ ASTOBJ_UNLOCK(iterator);
+ } while (0) );
+ if (pruned) {
+ ASTOBJ_CONTAINER_PRUNE_MARKED(&aliasl, oh323_destroy_alias);
+ }
+ ASTOBJ_CONTAINER_UNLOCK(&aliasl);
+}
+
+static void prune_peers(void)
+{
+ /* Prune peers who still are supposed to be deleted */
+ ASTOBJ_CONTAINER_PRUNE_MARKED(&peerl, oh323_destroy_peer);
+}
+
static int reload_config(int is_reload)
{
struct ast_config *cfg, *ucfg;
@@ -2973,56 +3023,6 @@
return 0;
}
-static void delete_users(void)
-{
- int pruned = 0;
-
- /* Delete all users */
- ASTOBJ_CONTAINER_WRLOCK(&userl);
- ASTOBJ_CONTAINER_TRAVERSE(&userl, 1, do {
- ASTOBJ_RDLOCK(iterator);
- ASTOBJ_MARK(iterator);
- ++pruned;
- ASTOBJ_UNLOCK(iterator);
- } while (0) );
- if (pruned) {
- ASTOBJ_CONTAINER_PRUNE_MARKED(&userl, oh323_destroy_user);
- }
- ASTOBJ_CONTAINER_UNLOCK(&userl);
-
- ASTOBJ_CONTAINER_WRLOCK(&peerl);
- ASTOBJ_CONTAINER_TRAVERSE(&peerl, 1, do {
- ASTOBJ_RDLOCK(iterator);
- ASTOBJ_MARK(iterator);
- ASTOBJ_UNLOCK(iterator);
- } while (0) );
- ASTOBJ_CONTAINER_UNLOCK(&peerl);
-}
-
-static void delete_aliases(void)
-{
- int pruned = 0;
-
- /* Delete all aliases */
- ASTOBJ_CONTAINER_WRLOCK(&aliasl);
- ASTOBJ_CONTAINER_TRAVERSE(&aliasl, 1, do {
- ASTOBJ_RDLOCK(iterator);
- ASTOBJ_MARK(iterator);
- ++pruned;
- ASTOBJ_UNLOCK(iterator);
- } while (0) );
- if (pruned) {
- ASTOBJ_CONTAINER_PRUNE_MARKED(&aliasl, oh323_destroy_alias);
- }
- ASTOBJ_CONTAINER_UNLOCK(&aliasl);
-}
-
-static void prune_peers(void)
-{
- /* Prune peers who still are supposed to be deleted */
- ASTOBJ_CONTAINER_PRUNE_MARKED(&peerl, oh323_destroy_peer);
-}
-
static int h323_reload(void)
{
ast_mutex_lock(&h323_reload_lock);
Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?view=diff&rev=92697&r1=92696&r2=92697
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Wed Dec 12 18:18:04 2007
@@ -18201,6 +18201,36 @@
ASTOBJ_CONTAINER_MARKALL(&peerl);
}
+ if (option_debug > 3)
+ ast_log(LOG_DEBUG, "--------------- SIP reload started\n");
+
+ clear_realm_authentication(authl);
+ clear_sip_domains();
+ authl = NULL;
+
+ /* First, destroy all outstanding registry calls */
+ /* This is needed, since otherwise active registry entries will not be destroyed */
+ ASTOBJ_CONTAINER_TRAVERSE(®l, 1, do {
+ ASTOBJ_RDLOCK(iterator);
+ if (iterator->call) {
+ if (option_debug > 2)
+ ast_log(LOG_DEBUG, "Destroying active SIP dialog for registry %s@%s\n", iterator->username, iterator->hostname);
+ /* This will also remove references to the registry */
+ sip_destroy(iterator->call);
+ }
+ ASTOBJ_UNLOCK(iterator);
+
+ } while(0));
+
+ /* Then, actually destroy users and registry */
+ ASTOBJ_CONTAINER_DESTROYALL(&userl, sip_destroy_user);
+ if (option_debug > 3)
+ ast_log(LOG_DEBUG, "--------------- Done destroying user list\n");
+ ASTOBJ_CONTAINER_DESTROYALL(®l, sip_registry_destroy);
+ if (option_debug > 3)
+ ast_log(LOG_DEBUG, "--------------- Done destroying registry list\n");
+ ASTOBJ_CONTAINER_MARKALL(&peerl);
+
/* Initialize copy of current global_regcontext for later use in removing stale contexts */
ast_copy_string(oldcontexts, global_regcontext, sizeof(oldcontexts));
oldregcontext = oldcontexts;
Modified: trunk/main/config.c
URL: http://svn.digium.com/view/asterisk/trunk/main/config.c?view=diff&rev=92697&r1=92696&r2=92697
==============================================================================
--- trunk/main/config.c (original)
+++ trunk/main/config.c Wed Dec 12 18:18:04 2007
@@ -1008,7 +1008,7 @@
if (!ast_strlen_zero(exec_file))
unlink(exec_file);
if (!do_include)
- return 0;
+ return -1;
/* XXX otherwise what ? the default return is 0 anyways */
} else {
More information about the asterisk-commits
mailing list