Hi,
when using sr.pv.get() in app_lua the pv value is not always returned.
Lua code is:
local fscript = sr.pv.get("$(sht(myscripts=>" .. args["filterid"] .."))") if(fscript) then sr.log("info","Filterscript is " .. fscript) else sr.log("warn","fscript not found!") end
And log shows:
app_lua [app_lua_sr.c:888]: pv get: (sht(myscripts=>1)) <core> [pvapi.c:318]: pvar [$(sht(myscripts=>1))] found in cache WARNING: app_lua [app_lua_sr.c:99]: fscript not found!
So the pv is being discovered in the pv cache, but sr.pv.get() returns no value.
I think the problem occurs especially in the case, when using sht_reload mi command. So I have had a short look into htable.c and I did not find any code, that clears the pv cache... is that necessary/may the reason for the problem, that pv is found in pv cache but nothing returned? (kamailio 3.2.3)
Thanks for any ideas...
Cheers Jasmin
Hello,
On 3/1/13 3:40 PM, Jasmin Schnatterbeck wrote:
Hi,
when using sr.pv.get() in app_lua the pv value is not always returned.
Lua code is:
local fscript = sr.pv.get("$(sht(myscripts=>" .. args["filterid"] .."))")
if(fscript) then sr.log("info","Filterscript is " .. fscript) else sr.log("warn","fscript not found!") end
And log shows:
app_lua [app_lua_sr.c:888]: pv get: (sht(myscripts=>1)) <core> [pvapi.c:318]: pvar [$(sht(myscripts=>1))] found in cache WARNING: app_lua [app_lua_sr.c:99]: fscript not found!
So the pv is being discovered in the pv cache, but sr.pv.get() returns no value.
I think the problem occurs especially in the case, when using sht_reload mi command. So I have had a short look into htable.c and I did not find any code, that clears the pv cache... is that necessary/may the reason for the problem, that pv is found in pv cache but nothing returned? (kamailio 3.2.3)
Thanks for any ideas...
the cache is for PV names, not for PV values. What is printed as value of fscript anyhow? It might get 0 which will result in same logic with IF.
Cheers, Daniel
Hi Daniel,
when printing fscript only, there is no output line in the log. So I added the following code:
if(fscript == nil) then sr.log("warn","Filterscript is nil") elseif(fscript == 0) then sr.log("warn","Filterscript is 0 n") elseif(fscript == "0") then sr.log("warn","Filterscript is 0 s") else sr.log("info","fscript found") end
And the output is:
WARNING: app_lua [app_lua_sr.c:99]: Filterscript is nil
So nothing is returned at all. But the htable entry is definitely set, because it works in some cases (without changing anything) and in some cases not. According to sht_dump, everything seems to be ok.
When using pv index like sr.pv.get("$(hdr(X-Test)["..i.."])") , a similar problem occurs (sometimes the value is returned, sometimes not). When omitting the pv index at all, it works everytime... So may the dynamic name of the variable is the problem? But (according to the debug message) the pv cache check function gets the correct name...
Cheers Jasmin
Am 01.03.2013 17:49, schrieb Daniel-Constantin Mierla:
Hello,
On 3/1/13 3:40 PM, Jasmin Schnatterbeck wrote:
Hi,
when using sr.pv.get() in app_lua the pv value is not always returned.
Lua code is:
local fscript = sr.pv.get("$(sht(myscripts=>" .. args["filterid"] .."))")
if(fscript) then sr.log("info","Filterscript is " .. fscript) else sr.log("warn","fscript not found!") end
And log shows:
app_lua [app_lua_sr.c:888]: pv get: (sht(myscripts=>1)) <core> [pvapi.c:318]: pvar [$(sht(myscripts=>1))] found in cache WARNING: app_lua [app_lua_sr.c:99]: fscript not found!
So the pv is being discovered in the pv cache, but sr.pv.get() returns no value.
I think the problem occurs especially in the case, when using sht_reload mi command. So I have had a short look into htable.c and I did not find any code, that clears the pv cache... is that necessary/may the reason for the problem, that pv is found in pv cache but nothing returned? (kamailio 3.2.3)
Thanks for any ideas...
the cache is for PV names, not for PV values. What is printed as value of fscript anyhow? It might get 0 which will result in same logic with IF.
Cheers, Daniel
Hi Daniel,
that issue seems to be fixed in 3.3... may the corresponding commit is related to app_lua or pvapi.
Cheers Jasmin
Am 02.03.2013 04:06, schrieb Jasmin Schnatterbeck:
Hi Daniel,
when printing fscript only, there is no output line in the log. So I added the following code:
if(fscript == nil) then sr.log("warn","Filterscript is nil") elseif(fscript == 0) then sr.log("warn","Filterscript is 0 n") elseif(fscript == "0") then sr.log("warn","Filterscript is 0 s") else sr.log("info","fscript found") end
And the output is:
WARNING: app_lua [app_lua_sr.c:99]: Filterscript is nil
So nothing is returned at all. But the htable entry is definitely set, because it works in some cases (without changing anything) and in some cases not. According to sht_dump, everything seems to be ok.
When using pv index like sr.pv.get("$(hdr(X-Test)["..i.."])") , a similar problem occurs (sometimes the value is returned, sometimes not). When omitting the pv index at all, it works everytime... So may the dynamic name of the variable is the problem? But (according to the debug message) the pv cache check function gets the correct name...
Cheers Jasmin
Am 01.03.2013 17:49, schrieb Daniel-Constantin Mierla:
Hello,
On 3/1/13 3:40 PM, Jasmin Schnatterbeck wrote:
Hi,
when using sr.pv.get() in app_lua the pv value is not always returned.
Lua code is:
local fscript = sr.pv.get("$(sht(myscripts=>" .. args["filterid"] .."))")
if(fscript) then sr.log("info","Filterscript is " .. fscript) else sr.log("warn","fscript not found!") end
And log shows:
app_lua [app_lua_sr.c:888]: pv get: (sht(myscripts=>1)) <core> [pvapi.c:318]: pvar [$(sht(myscripts=>1))] found in cache WARNING: app_lua [app_lua_sr.c:99]: fscript not found!
So the pv is being discovered in the pv cache, but sr.pv.get() returns no value.
I think the problem occurs especially in the case, when using sht_reload mi command. So I have had a short look into htable.c and I did not find any code, that clears the pv cache... is that necessary/may the reason for the problem, that pv is found in pv cache but nothing returned? (kamailio 3.2.3)
Thanks for any ideas...
the cache is for PV names, not for PV values. What is printed as value of fscript anyhow? It might get 0 which will result in same logic with IF.
Cheers, Daniel
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
Probably is related to this commit: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=5fc59c44... It should be fixed in 3.2 (pull from git 3.2 branch or latest 3.2.x tarball and test).
Regards, Ovidiu Sas