hashtable_this(i, &key, NULL, &val);
if (key && val) {
sigmod = val;
- zap_dso_destroy(sigmod->pvt);
+ if (sigmod->on_unload() != ZAP_SUCCESS) {
+ zap_log(ZAP_LOG_ERROR, "Failed to unload boost signaling module object\n");
+ /* hope for the best */
+ } else {
+ zap_dso_destroy(sigmod->pvt);
+ }
}
}
FAIL_CONFIG_RETURN(ZAP_FAIL);
}
+ if (sigmod_iface->on_load() != ZAP_SUCCESS) {
+ zap_log(ZAP_LOG_ERROR, "Failed to load Sangoma boost signaling module interface '%s': on_load method failed\n", path);
+ FAIL_CONFIG_RETURN(ZAP_FAIL);
+ }
sigmod_iface->pvt = lib;
sigmod_iface->set_write_msg_cb(zap_boost_write_msg);
sigmod_iface->set_sig_status_cb(zap_boost_sig_status_change);
/*!
\brief Called when the module is being loaded BEFORE calling anything else
+ \return ZAP_SUCCESS or ZAP_FAIL
*/
#define BOOST_ON_LOAD_ARGS (void)
-typedef void (*boost_on_load_func_t) BOOST_ON_LOAD_ARGS;
+typedef zap_status_t (*boost_on_load_func_t) BOOST_ON_LOAD_ARGS;
#define BOOST_ON_LOAD_FUNCTION(name) void name BOOST_ON_LOAD_ARGS
/*!
\brief Called when the module is being unloaded, last chance to stop everything!
*/
#define BOOST_ON_UNLOAD_ARGS (void)
-typedef void (*boost_on_unload_func_t) BOOST_ON_UNLOAD_ARGS;
+typedef zap_status_t (*boost_on_unload_func_t) BOOST_ON_UNLOAD_ARGS;
#define BOOST_ON_UNLOAD_FUNCTION(name) void name BOOST_ON_UNLOAD_ARGS
/*!