[SR-Users] Problem with callid as htable key

Daniel-Constantin Mierla miconda at gmail.com
Tue Oct 16 10:16:35 CEST 2018


Just to add that regexp matching when using keys from the sip message
such as call-id is exposed further to some issues -- for example, it is
common to have . (dot) in call-id, which for a regexp is matching any
char, so a call id having 123.456 is matching 123x456. So depending on
what you want to count, might be better to match by equal or prefix rules.

Cheers,
Daniel

On 16.10.18 10:03, jenus at cyberchaos.nl wrote:
> Daniel,
>
> Thanks for the quick response, that indeed solves my problem.
>
>
> Jan
>
> Daniel-Constantin Mierla schreef op 2018-10-16 09:55:
>> Hello,
>>
>> the expression in the $shtcn(table=>exp) can have some operators at the
>> beginning, see:
>>
>>   -
>> https://www.kamailio.org/wiki/cookbooks/devel/pseudovariables#shtcn_htable_exp
>>
>>
>> So, eq is one of them, the safest is to explicitly set the operator if
>> you cannot predict what is the key, like in this case. If the operator
>> is missing, then the exp is matched as regular expression, so you can
>> do:
>>
>> $shtcn(ht_test=>~~$var(htid))
>>
>> Cheers,
>> Daniel
>>
>>
>> On 16.10.18 09:47, jenus at cyberchaos.nl wrote:
>>> Hello,
>>>
>>> I'm running kamailio 5.1.4 and running into a issue with htable. I use
>>> it to store some dialog data so i can use it in a http route. When i
>>> use the callid as a key it creates a issue for callid's starting with
>>> eq. Here some example code that i use to reproduce the issue:
>>>
>>>
>>> modparam("htable", "htable", "ht_test=>size=16;autoexpire=10")
>>>
>>> $var(htable-val) = $_s($dlg(h_entry)) + "::" + $_s($dlg(h_id)) + "::"
>>> + $Ts;
>>> xlog("L_WARN", "HT_TEST: Adding $var(htable-val) to ht_test with key
>>> eq1234");
>>> $var(htid) = "eq1234";
>>> $sht(ht_test=>$var(htid)) =  $var(htable-val);
>>> $var(htable-val) = $null;
>>>
>>> if ($shtcn(ht_test=>$var(htid)) > 0)
>>> {
>>>        xlog("L_WARN", "HT_TEST: Key eq1234 found!");
>>> } else {
>>>        xlog("L_WARN", "HT_TEST: Key eq1234 NOT found!");
>>> }
>>> $var(htid) = $null;
>>>
>>> Results in :
>>>
>>> Oct 16 09:36:31 sip03 /usr/sbin/kamailio[22344]: WARNING: <script>:
>>> HT_TEST: Adding 531::926::1539675391 to ht_test with key eq1234
>>> Oct 16 09:36:31 sip03 /usr/sbin/kamailio[22344]: WARNING: <script>:
>>> HT_TEST: Key eq1234 NOT found!
>>>
>>>
>>> When i prefix eq with a 1 it works fine:
>>>
>>> modparam("htable", "htable", "ht_test=>size=16;autoexpire=10")
>>>
>>> $var(htable-val) = $_s($dlg(h_entry)) + "::" + $_s($dlg(h_id)) + "::"
>>> + $Ts;
>>> xlog("L_WARN", "HT_TEST: Adding $var(htable-val) to ht_test with key
>>> eq1234");
>>> $var(htid) = "1eq1234";
>>> $sht(ht_test=>$var(htid)) =  $var(htable-val);
>>> $var(htable-val) = $null;
>>>
>>> if ($shtcn(ht_test=>$var(htid)) > 0)
>>> {
>>>        xlog("L_WARN", "HT_TEST: Key eq1234 found!");
>>> } else {
>>>        xlog("L_WARN", "HT_TEST: Key eq1234 NOT found!");
>>> }
>>> $var(htid) = $null;
>>>
>>> Results in:
>>>
>>> Oct 16 09:37:25 sip03 /usr/sbin/kamailio[22555]: WARNING: <script>:
>>> HT_TEST: Adding 3050::1098::1539675445 to ht_test with key eq1234
>>> Oct 16 09:37:25 sip03 /usr/sbin/kamailio[22555]: WARNING: <script>:
>>> HT_TEST: Key eq1234 found!
>>>
>>>
>>> Am i running into a bug? Or are there some restrictions on the key's i
>>> can use? I'm still going trough the logs to check if there are more
>>> callid's that have a issue with matching.
>>>
>>>
>>> Thanks,
>>>
>>> Jan Hazenberg
>>>
>>> _______________________________________________
>>> Kamailio (SER) - Users Mailing List
>>> sr-users at lists.kamailio.org
>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference -- www.kamailioworld.com
Kamailio Advanced Training, Nov 12-14, 2018, in Berlin -- www.asipto.com




More information about the sr-users mailing list