[sr-dev] git:master:c2ad115e: app_perl: added modparam to control behaviour on perl_parse() code

Daniel-Constantin Mierla miconda at gmail.com
Thu Jul 7 09:16:38 CEST 2022


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

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2022-07-07T09:04:37+02:00

app_perl: added modparam to control behaviour on perl_parse() code

---

Modified: src/modules/app_perl/app_perl_mod.c

---

Diff:  https://github.com/kamailio/kamailio/commit/c2ad115ec1b96e99bc956f0f8e83cacc214da6b6.diff
Patch: https://github.com/kamailio/kamailio/commit/c2ad115ec1b96e99bc956f0f8e83cacc214da6b6.patch

---

diff --git a/src/modules/app_perl/app_perl_mod.c b/src/modules/app_perl/app_perl_mod.c
index ec373c7bf6..2e3fc3683d 100644
--- a/src/modules/app_perl/app_perl_mod.c
+++ b/src/modules/app_perl/app_perl_mod.c
@@ -71,6 +71,7 @@ int unsafemodfnc = 0;
 int _ap_reset_cycles_init = 0;
 int _ap_exec_cycles = 0;
 int *_ap_reset_cycles = 0;
+int _ap_parse_mode = 0;
 
 /* Reference to the running Perl interpreter instance */
 PerlInterpreter *my_perl = NULL;
@@ -123,6 +124,7 @@ static param_export_t params[] = {
 	{"unsafemodfnc", INT_PARAM, &unsafemodfnc},
 	{"reset_cycles", INT_PARAM, &_ap_reset_cycles_init},
 	{"perl_destroy_func",  PARAM_STRING, &perl_destroy_func},
+	{"parse_mode", PARAM_INT, &_ap_parse_mode},
 	{ 0, 0, 0 }
 };
 
@@ -237,8 +239,21 @@ PerlInterpreter *parser_init(void) {
 	pr=perl_parse(new_perl, xs_init, argc, argv, NULL);
 
 	if (pr) {
-		LM_WARN("parsed perl file \"%s\" returned with code %d - continue\n",
+		if(_ap_parse_mode==0) {
+			LM_WARN("parsed perl file \"%s\" returned with code %d - continue\n",
 				argv[argc-1], pr);
+		} else {
+			LM_ERR("failed parsing perl file \"%s\" with code %d.\n",
+					argv[argc-1], pr);
+			if (modpathset_start) {
+				for (i = modpathset_start; i <= modpathset_end; i++) {
+					pkg_free(argv[i]);
+				}
+			}
+			perl_destruct(new_perl);
+			perl_free(new_perl);
+			return NULL;
+		}
 	} else {
 		LM_INFO("successfully parsed perl file \"%s\"\n", argv[argc-1]);
 	}




More information about the sr-dev mailing list