Browse code

app_lua: completed the handling of KEMI functions with 4 parameters

Daniel-Constantin Mierla authored on 16/05/2019 07:30:05
Showing 1 changed files
... ...
@@ -1798,12 +1798,40 @@ int sr_kemi_lua_exec_func_ex(lua_State* L, sr_kemi_t *ket, int pdelta)
1798 1798
 			} else if(ket->ptypes[0]==SR_KEMIP_STR
1799 1799
 					&& ket->ptypes[1]==SR_KEMIP_STR
1800 1800
 					&& ket->ptypes[2]==SR_KEMIP_INT
1801
+					&& ket->ptypes[3]==SR_KEMIP_STR) {
1802
+				ret = ((sr_kemi_fmssns_f)(ket->func))(env_L->msg,
1803
+						&vps[0].s, &vps[1].s, vps[2].n, &vps[3].s);
1804
+				return sr_kemi_lua_return_int(L, ket, ret);
1805
+			} else if(ket->ptypes[0]==SR_KEMIP_STR
1806
+					&& ket->ptypes[1]==SR_KEMIP_STR
1807
+					&& ket->ptypes[2]==SR_KEMIP_INT
1801 1808
 					&& ket->ptypes[3]==SR_KEMIP_INT) {
1802 1809
 				ret = ((sr_kemi_fmssnn_f)(ket->func))(env_L->msg,
1803 1810
 						&vps[0].s, &vps[1].s, vps[2].n, vps[3].n);
1804 1811
 				return sr_kemi_lua_return_int(L, ket, ret);
1805 1812
 			} else if(ket->ptypes[0]==SR_KEMIP_STR
1806 1813
 					&& ket->ptypes[1]==SR_KEMIP_INT
1814
+					&& ket->ptypes[2]==SR_KEMIP_STR
1815
+					&& ket->ptypes[3]==SR_KEMIP_STR) {
1816
+				ret = ((sr_kemi_fmsnss_f)(ket->func))(env_L->msg,
1817
+						&vps[0].s, vps[1].n, &vps[2].s, &vps[3].s);
1818
+				return sr_kemi_lua_return_int(L, ket, ret);
1819
+			} else if(ket->ptypes[0]==SR_KEMIP_STR
1820
+					&& ket->ptypes[1]==SR_KEMIP_INT
1821
+					&& ket->ptypes[2]==SR_KEMIP_STR
1822
+					&& ket->ptypes[3]==SR_KEMIP_INT) {
1823
+				ret = ((sr_kemi_fmsnsn_f)(ket->func))(env_L->msg,
1824
+						&vps[0].s, vps[1].n, &vps[2].s, vps[3].n);
1825
+				return sr_kemi_lua_return_int(L, ket, ret);
1826
+			} else if(ket->ptypes[0]==SR_KEMIP_STR
1827
+					&& ket->ptypes[1]==SR_KEMIP_INT
1828
+					&& ket->ptypes[2]==SR_KEMIP_INT
1829
+					&& ket->ptypes[3]==SR_KEMIP_STR) {
1830
+				ret = ((sr_kemi_fmsnns_f)(ket->func))(env_L->msg,
1831
+						&vps[0].s, vps[1].n, vps[2].n, &vps[3].s);
1832
+				return sr_kemi_lua_return_int(L, ket, ret);
1833
+			} else if(ket->ptypes[0]==SR_KEMIP_STR
1834
+					&& ket->ptypes[1]==SR_KEMIP_INT
1807 1835
 					&& ket->ptypes[2]==SR_KEMIP_INT
1808 1836
 					&& ket->ptypes[3]==SR_KEMIP_INT) {
1809 1837
 				ret = ((sr_kemi_fmsnnn_f)(ket->func))(env_L->msg,
... ...
@@ -1817,6 +1845,27 @@ int sr_kemi_lua_exec_func_ex(lua_State* L, sr_kemi_t *ket, int pdelta)
1817 1817
 						vps[0].n, &vps[1].s, &vps[2].s, &vps[3].s);
1818 1818
 				return sr_kemi_lua_return_int(L, ket, ret);
1819 1819
 			} else if(ket->ptypes[0]==SR_KEMIP_INT
1820
+					&& ket->ptypes[1]==SR_KEMIP_STR
1821
+					&& ket->ptypes[2]==SR_KEMIP_STR
1822
+					&& ket->ptypes[3]==SR_KEMIP_INT) {
1823
+				ret = ((sr_kemi_fmnssn_f)(ket->func))(env_L->msg,
1824
+						vps[0].n, &vps[1].s, &vps[2].s, vps[3].n);
1825
+				return sr_kemi_lua_return_int(L, ket, ret);
1826
+			} else if(ket->ptypes[0]==SR_KEMIP_INT
1827
+					&& ket->ptypes[1]==SR_KEMIP_STR
1828
+					&& ket->ptypes[2]==SR_KEMIP_INT
1829
+					&& ket->ptypes[3]==SR_KEMIP_STR) {
1830
+				ret = ((sr_kemi_fmnsns_f)(ket->func))(env_L->msg,
1831
+						vps[0].n, &vps[1].s, vps[2].n, &vps[3].s);
1832
+				return sr_kemi_lua_return_int(L, ket, ret);
1833
+			} else if(ket->ptypes[0]==SR_KEMIP_INT
1834
+					&& ket->ptypes[1]==SR_KEMIP_STR
1835
+					&& ket->ptypes[2]==SR_KEMIP_INT
1836
+					&& ket->ptypes[3]==SR_KEMIP_INT) {
1837
+				ret = ((sr_kemi_fmnsnn_f)(ket->func))(env_L->msg,
1838
+						vps[0].n, &vps[1].s, vps[2].n, vps[3].n);
1839
+				return sr_kemi_lua_return_int(L, ket, ret);
1840
+			} else if(ket->ptypes[0]==SR_KEMIP_INT
1820 1841
 					&& ket->ptypes[1]==SR_KEMIP_INT
1821 1842
 					&& ket->ptypes[2]==SR_KEMIP_STR
1822 1843
 					&& ket->ptypes[3]==SR_KEMIP_STR) {
... ...
@@ -1825,6 +1874,13 @@ int sr_kemi_lua_exec_func_ex(lua_State* L, sr_kemi_t *ket, int pdelta)
1825 1825
 				return sr_kemi_lua_return_int(L, ket, ret);
1826 1826
 			} else if(ket->ptypes[0]==SR_KEMIP_INT
1827 1827
 					&& ket->ptypes[1]==SR_KEMIP_INT
1828
+					&& ket->ptypes[2]==SR_KEMIP_STR
1829
+					&& ket->ptypes[3]==SR_KEMIP_INT) {
1830
+				ret = ((sr_kemi_fmnnsn_f)(ket->func))(env_L->msg,
1831
+						vps[0].n, vps[1].n, &vps[2].s, vps[3].n);
1832
+				return sr_kemi_lua_return_int(L, ket, ret);
1833
+			} else if(ket->ptypes[0]==SR_KEMIP_INT
1834
+					&& ket->ptypes[1]==SR_KEMIP_INT
1828 1835
 					&& ket->ptypes[2]==SR_KEMIP_INT
1829 1836
 					&& ket->ptypes[3]==SR_KEMIP_STR) {
1830 1837
 				ret = ((sr_kemi_fmnnns_f)(ket->func))(env_L->msg,
... ...
@@ -1838,8 +1894,7 @@ int sr_kemi_lua_exec_func_ex(lua_State* L, sr_kemi_t *ket, int pdelta)
1838 1838
 						vps[0].n, vps[1].n, vps[2].n, vps[3].n);
1839 1839
 				return sr_kemi_lua_return_int(L, ket, ret);
1840 1840
 			} else {
1841
-				LM_ERR("invalid parameters for: %.*s\n",
1842
-						fname->len, fname->s);
1841
+				LM_ERR("invalid parameters for: %.*s\n", fname->len, fname->s);
1843 1842
 				return app_lua_return_false(L);
1844 1843
 			}
1845 1844
 		break;