[svn-commits] dlee: trunk r398150 - in /trunk: ./ include/asterisk/ main/
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Fri Aug 30 15:59:03 CDT 2013
Author: dlee
Date: Fri Aug 30 15:58:59 2013
New Revision: 398150
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=398150
Log:
Fix graceful shutdown crash.
The cleanup code for optional_api needs to happen after all of the optional
API users and providers have unused/unprovided. Unfortunately, regsitering the
atexit() handler at the beginning of main() isn't soon enough, since module
destructors run after that.
........
Merged revisions 398149 from http://svn.asterisk.org/svn/asterisk/branches/12
Modified:
trunk/ (props changed)
trunk/include/asterisk/optional_api.h
trunk/main/asterisk.c
trunk/main/optional_api.c
Propchange: trunk/
------------------------------------------------------------------------------
--- branch-12-merged (original)
+++ branch-12-merged Fri Aug 30 15:58:59 2013
@@ -1,1 +1,1 @@
-/branches/12:1-397989,398002,398016,398020,398023,398025,398062,398068,398100,398116,398139,398147
+/branches/12:1-398149
Modified: trunk/include/asterisk/optional_api.h
URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/optional_api.h?view=diff&rev=398150&r1=398149&r2=398150
==============================================================================
--- trunk/include/asterisk/optional_api.h (original)
+++ trunk/include/asterisk/optional_api.h Fri Aug 30 15:58:59 2013
@@ -175,14 +175,6 @@
*/
void ast_optional_api_unuse(const char *symname, ast_optional_fn *optional_ref,
const char *module);
-
-/*!
- * \brief Call at exit to clean up optional_api internals.
- *
- * Since the optional_api code might run before main() starts, it can't safely
- * register its own cleanup handlers. That has to be done within main().
- */
-void optional_api_cleanup(void);
#define AST_OPTIONAL_API_NAME(name) __##name
Modified: trunk/main/asterisk.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/asterisk.c?view=diff&rev=398150&r1=398149&r2=398150
==============================================================================
--- trunk/main/asterisk.c (original)
+++ trunk/main/asterisk.c Fri Aug 30 15:58:59 2013
@@ -247,7 +247,6 @@
#include "asterisk/stasis_endpoints.h"
#include "asterisk/stasis_system.h"
#include "asterisk/security_events.h"
-#include "asterisk/optional_api.h"
#include "../defaults.h"
@@ -4169,10 +4168,6 @@
ast_el_read_history(filename);
}
-#if defined(OPTIONAL_API)
- ast_register_cleanup(optional_api_cleanup);
-#endif
-
ast_json_init();
ast_ulaw_init();
ast_alaw_init();
Modified: trunk/main/optional_api.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/optional_api.c?view=diff&rev=398150&r1=398149&r2=398150
==============================================================================
--- trunk/main/optional_api.c (original)
+++ trunk/main/optional_api.c Fri Aug 30 15:58:59 2013
@@ -158,18 +158,8 @@
size_t len;
} apis;
-void optional_api_cleanup(void)
-{
- while (apis.len--) {
- optional_api_destroy(apis.list[apis.len]);
- }
- free(apis.list);
- apis.list = NULL;
- apis.maxlen = 0;
-}
-
-/*!
- * \brief Gets (or creates) the \ref optional_api for the give function.
+/*!
+ * \brief Gets (or creates) the \ref optional_api for the given function.
*
* \param sysname Name of the function to look up.
* \return Corresponding \ref optional_api.
@@ -181,9 +171,11 @@
size_t i;
/* Find one, if we already have it */
- for (i = 0; i < apis.len; ++i) {
- if (strcmp(symname, apis.list[i]->symname) == 0) {
- return apis.list[i];
+ if (apis.list) {
+ for (i = 0; i < apis.len; ++i) {
+ if (strcmp(symname, apis.list[i]->symname) == 0) {
+ return apis.list[i];
+ }
}
}
More information about the svn-commits
mailing list