Description

app_python and, in some places, app_python3 handles KEMI calls with 4 and more parameters incorrectly. It uses "or" operations instead of "and" and thus it will always tries to convert the call into a "str-str-str-str" invocation.

Also it's missing a "ssii" variant for calling e.g. KSR.htable.sht_setxi()

Reproduction

Try to call KSR.htable.sht_setxs() or KSR.htable.sht_setxi() with app_python.

Log Messages

ERROR: app_python [apy_kemi.c:342]: sr_apy_kemi_exec_func_ex(): unable to retrieve str-str-str-str params 4

Possible Solutions

Clean up app_python and app_python3 by changing "or" to "and" in lines like this one:

 if(ket->ptypes[0]==SR_KEMIP_STR
				|| ket->ptypes[1]==SR_KEMIP_STR
				|| ket->ptypes[2]==SR_KEMIP_INT
				|| ket->ptypes[3]==SR_KEMIP_INT) 

Further, app_python lacks a "ssii" parameter handler so using KSR.htable.sht_setxi() is not possible.

I could contribute a pull request if no core developer has time to fix it.

Additional Information

version: kamailio 5.2.2 (x86_64/linux) 
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown 
compiled with gcc 5.3.1


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.