diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c index 472572f469..117a457b6e 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c @@ -1728,7 +1728,16 @@ void helper_destroy_mac_slice_config(Protocol__FlexSliceConfig *slice_config) { } int check_scheduler(mid_t mod_id, char *s) { - return dlsym(NULL, s) != NULL; + if (!s) + return 1; + if (dlsym(NULL, s)) + return 1; + flexran_agent_so_handle_t *so = NULL; + SLIST_FOREACH(so, &flexran_handles[mod_id], entries) { + if (strcmp(so->name, s) == 0) + return 1; + } + return 0; } void request_scheduler(mid_t mod_id, char *s, int xid) { diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c index b65b197442..42246c3ebf 100644 --- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c +++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c @@ -1029,6 +1029,10 @@ int load_dl_scheduler_function(mid_t mod_id, const char *function_name) { } void *search_so(mid_t mod_id, char *name) { + if (!name) // no name -> nothing to return, so use NULL for executable + return NULL; + if (dlsym(NULL, name)) // found it in executable + return NULL; flexran_agent_so_handle_t *so = NULL; SLIST_FOREACH(so, &flexran_handles[mod_id], entries) { if (strcmp(so->name, name) == 0)