diff options
author | Corey Farrell <git@cfware.com> | 2015-05-03 22:03:13 -0400 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2015-05-03 21:09:41 -0500 |
commit | 981084f08cd2b696f9f0009e71020302c078b828 (patch) | |
tree | ce25dffe00e64dcf0b563ddf9b1df98c8f2efe13 /main/format.c | |
parent | ddf9dcaad7413515c87a00b31d294eb5329f677b (diff) |
Format Interfaces: Prevent unload except by shutdown.
Format interfaces cannot be unregistered, so the modules that provide them
need to be held open except by shutdown.
ASTERISK-25054 #close
Reported by: Corey Farrell
Change-Id: Iadbd9675bf0d30b8fded5a739b163db3ea2db8f3
Diffstat (limited to 'main/format.c')
-rw-r--r-- | main/format.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/main/format.c b/main/format.c index 8fed71f73..bbfb69721 100644 --- a/main/format.c +++ b/main/format.c @@ -36,6 +36,7 @@ ASTERISK_REGISTER_FILE() #include "asterisk/format.h" #include "asterisk/astobj2.h" #include "asterisk/strings.h" +#include "asterisk/module.h" /*! \brief Number of buckets to use for format interfaces (should be prime for performance reasons) */ #define FORMAT_INTERFACE_BUCKETS 53 @@ -156,6 +157,8 @@ int __ast_format_interface_register(const char *codec, const struct ast_format_i format_interface->interface = interface; strcpy(format_interface->codec, codec); /* Safe */ + /* Once registered a format interface cannot be unregistered. */ + ast_module_shutdown_ref(mod); ao2_link_flags(interfaces, format_interface, OBJ_NOLOCK); ao2_ref(format_interface, -1); |