[sr-dev] git:master:cc96ebfa: app_python3s: more generic form of the function executing script init callback

Daniel-Constantin Mierla miconda at gmail.com
Tue Dec 6 10:55:41 CET 2022


Module: kamailio
Branch: master
Commit: cc96ebfa7f4bebf45b368ee69dc4f9612575ee9b
URL: https://github.com/kamailio/kamailio/commit/cc96ebfa7f4bebf45b368ee69dc4f9612575ee9b

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at 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/cc96ebfa7f4bebf45b368ee69dc4f9612575ee9b.diff
Patch: https://github.com/kamailio/kamailio/commit/cc96ebfa7f4bebf45b368ee69dc4f9612575ee9b.patch

---

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;




More information about the sr-dev mailing list