optional_api: Remove unused nonoptreq fields
As they're not actively used, they only grow stale. The moduleinfo field itself is kept in Asterisk 13/15 for ABI compatibility. ASTERISK-28046 #close Change-Id: I8df66a7007f807840414bb348511a8c14c05a9fc
This commit is contained in:
parent
2969d2ac5c
commit
bc8cdcefa8
|
@ -23,11 +23,10 @@
|
|||
* the validator's function pointer.
|
||||
*
|
||||
* The reason for this seamingly useless indirection is the way function
|
||||
* pointers interfere with module loading. Asterisk attempts to dlopen() each
|
||||
* module using \c RTLD_LAZY in order to read some metadata from the module.
|
||||
* Unfortunately, if you take the address of a function, the function has to be
|
||||
* resolvable at load time, even if \c RTLD_LAZY is specified. By moving the
|
||||
* function-address-taking into this module, we can once again be lazy.
|
||||
* pointers used to interfere with module loading. Previously, Asterisk
|
||||
* attempted to dlopen() each module using \c RTLD_LAZY in order to read some
|
||||
* metadata from the module. Using functions to get the function pointer
|
||||
* allowed us to be lazy.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -100,23 +100,10 @@ struct stasis_message_sink *stasis_message_sink_create(void)
|
|||
* \brief Implementation of the stasis_message_sink_cb() callback.
|
||||
*
|
||||
* Why the roundabout way of exposing this via stasis_message_sink_cb()? Well,
|
||||
* it has to do with how we load modules.
|
||||
* it has to do with how we previously loaded modules, using \c RTLD_LAZY.
|
||||
*
|
||||
* Modules have their own metadata compiled into them in the module info block
|
||||
* at the end of the file. This includes dependency information in the
|
||||
* \c nonoptreq field.
|
||||
*
|
||||
* Asterisk loads the module, inspects the field, then loads any needed
|
||||
* dependencies. This works because Asterisk passes \c RTLD_LAZY to the initial
|
||||
* dlopen(), which defers binding function references until they are called.
|
||||
*
|
||||
* But when you take the address of a function, that function needs to be
|
||||
* available at load time. So if some module used the address of
|
||||
* message_sink_cb() directly, and \c res_stasis_test.so wasn't loaded yet, then
|
||||
* that module would fail to load.
|
||||
*
|
||||
* The stasis_message_sink_cb() function gives us a layer of indirection so that
|
||||
* the initial lazy binding will still work as expected.
|
||||
* The stasis_message_sink_cb() function gave us a layer of indirection so that
|
||||
* the initial lazy binding would still work as expected.
|
||||
*/
|
||||
static void message_sink_cb(void *data, struct stasis_subscription *sub,
|
||||
struct stasis_message *message)
|
||||
|
|
|
@ -23,11 +23,10 @@
|
|||
* the validator's function pointer.
|
||||
*
|
||||
* The reason for this seamingly useless indirection is the way function
|
||||
* pointers interfere with module loading. Asterisk attempts to dlopen() each
|
||||
* module using \c RTLD_LAZY in order to read some metadata from the module.
|
||||
* Unfortunately, if you take the address of a function, the function has to be
|
||||
* resolvable at load time, even if \c RTLD_LAZY is specified. By moving the
|
||||
* function-address-taking into this module, we can once again be lazy.
|
||||
* pointers used to interfere with module loading. Previously, Asterisk
|
||||
* attempted to dlopen() each module using \c RTLD_LAZY in order to read some
|
||||
* metadata from the module. Using functions to get the function pointer
|
||||
* allowed us to be lazy.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
|
@ -40,8 +40,8 @@
|
|||
/*!
|
||||
* Wrapper of ast_test_validate_int() so an external function pointer is not used.
|
||||
*
|
||||
* \note Must do this because using an external function pointer
|
||||
* does not play nicely when loading with RTLD_LAZY.
|
||||
* \note We do this because using an external function pointer
|
||||
* did not play nicely when we loaded with RTLD_LAZY.
|
||||
*/
|
||||
static int wrap_ast_ari_validate_int(struct ast_json *json)
|
||||
{
|
||||
|
@ -53,8 +53,8 @@ static int wrap_ast_ari_validate_int(struct ast_json *json)
|
|||
/*!
|
||||
* Wrapper of ast_ari_validate_string() so an external function pointer is not used.
|
||||
*
|
||||
* \note Must do this because using an external function pointer
|
||||
* does not play nicely when loading with RTLD_LAZY.
|
||||
* \note We do this because using an external function pointer
|
||||
* did not play nicely when we loaded with RTLD_LAZY.
|
||||
*/
|
||||
static int wrap_ast_ari_validate_string(struct ast_json *json)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue