Merge pull request #13445 from donaldsharp/lua_scripting_mem_leak

zebra: Reduce creation and fix memory leak of frrscripting pointers
This commit is contained in:
Donatas Abraitis 2023-05-09 15:38:06 +03:00 committed by GitHub
commit bae305fc9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4704,6 +4704,21 @@ static void rib_process_dplane_results(struct event *thread)
struct dplane_ctx_list_head ctxlist; struct dplane_ctx_list_head ctxlist;
bool shut_p = false; bool shut_p = false;
#ifdef HAVE_SCRIPTING
char *script_name =
frrscript_names_get_script_name(ZEBRA_ON_RIB_PROCESS_HOOK_CALL);
int ret = 1;
struct frrscript *fs = NULL;
if (script_name) {
fs = frrscript_new(script_name);
if (fs)
ret = frrscript_load(fs, ZEBRA_ON_RIB_PROCESS_HOOK_CALL,
NULL);
}
#endif /* HAVE_SCRIPTING */
/* Dequeue a list of completed updates with one lock/unlock cycle */ /* Dequeue a list of completed updates with one lock/unlock cycle */
do { do {
@ -4737,24 +4752,7 @@ static void rib_process_dplane_results(struct event *thread)
continue; continue;
} }
#ifdef HAVE_SCRIPTING
char *script_name = frrscript_names_get_script_name(
ZEBRA_ON_RIB_PROCESS_HOOK_CALL);
int ret = 1;
struct frrscript *fs;
if (script_name) {
fs = frrscript_new(script_name);
if (fs)
ret = frrscript_load(
fs, ZEBRA_ON_RIB_PROCESS_HOOK_CALL,
NULL);
}
#endif /* HAVE_SCRIPTING */
while (ctx) { while (ctx) {
#ifdef HAVE_SCRIPTING #ifdef HAVE_SCRIPTING
if (ret == 0) if (ret == 0)
frrscript_call(fs, frrscript_call(fs,
@ -4869,6 +4867,11 @@ static void rib_process_dplane_results(struct event *thread)
} }
} while (1); } while (1);
#ifdef HAVE_SCRIPTING
if (fs)
frrscript_delete(fs);
#endif
} }
/* /*