Module: kamailio Branch: master Commit: cc96ebfa7f4bebf45b368ee69dc4f9612575ee9b URL: https://github.com/kamailio/kamailio/commit/cc96ebfa7f4bebf45b368ee69dc4f961...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2022-12-06T10:55:20+01:00
app_python3s: more generic form of the function executing script init callback
---
Modified: src/modules/app_python3s/app_python3s_mod.c
---
Diff: https://github.com/kamailio/kamailio/commit/cc96ebfa7f4bebf45b368ee69dc4f961... Patch: https://github.com/kamailio/kamailio/commit/cc96ebfa7f4bebf45b368ee69dc4f961...
---
diff --git a/src/modules/app_python3s/app_python3s_mod.c b/src/modules/app_python3s/app_python3s_mod.c index 77c9665b53..aa2f1b1460 100644 --- a/src/modules/app_python3s/app_python3s_mod.c +++ b/src/modules/app_python3s/app_python3s_mod.c @@ -256,27 +256,26 @@ int w_app_python3s_exec2(sip_msg_t *_msg, char *pmethod, char *pparam) return apy3s_exec_func(_msg, method.s, param.s, 1); }
-int apy3s_script_init(PyObject* pModule) +int apy3s_script_init_exec(PyObject* pModule, str *fname, int *rank) { PyObject *pFunc, *pArgs, *pHandler; PyGILState_STATE gstate; int rval = -1;
- if(_sr_apy3s_script_init.len<=0) { + if(fname==NULL || fname->len<=0) { return 0; } - LM_DBG("script init callback: %.*s()\n", _sr_apy3s_script_init.len, - _sr_apy3s_script_init.s); + LM_DBG("script init callback: %.*s()\n", fname->len, fname->s);
gstate = PyGILState_Ensure(); - pFunc = PyObject_GetAttrString(pModule, _sr_apy3s_script_init.s); + pFunc = PyObject_GetAttrString(pModule, fname->s); /* pFunc is a new reference */
if (pFunc == NULL || !PyCallable_Check(pFunc)) { if (!PyErr_Occurred()) PyErr_Format(PyExc_AttributeError, "'module' object '%s' has no attribute '%s'", - _sr_apy3s_bname, _sr_apy3s_script_init.s); + _sr_apy3s_bname, fname->s); apy3s_handle_exception("script_init"); Py_XDECREF(pFunc); goto error; @@ -307,7 +306,7 @@ int apy3s_script_init(PyObject* pModule) PyErr_Format(PyExc_TypeError, "Function '%s' of module '%s' has returned not returned" " object. Should be a class instance.", - _sr_apy3s_script_init.s, _sr_apy3s_bname); + fname->s, _sr_apy3s_bname); apy3s_handle_exception("script_init"); Py_DECREF(pHandler); goto error; @@ -333,7 +332,7 @@ int apy_reload_script(void) Py_DECREF(_sr_apy3s_format_exc_obj); goto err; } - if (apy3s_script_init(pModule)) { + if (apy3s_script_init_exec(pModule, &_sr_apy3s_script_init, NULL)) { LM_ERR("Error calling mod_init on reload\n"); Py_DECREF(pModule); goto err; @@ -422,7 +421,7 @@ int apy_load_script(void) Py_DECREF(_sr_apy3s_format_exc_obj); goto err; } - if (apy3s_script_init(pModule) != 0) { + if (apy3s_script_init_exec(pModule, &_sr_apy3s_script_init, NULL) != 0) { LM_ERR("failed calling script init callback function\n"); Py_DECREF(pModule); goto err;