[SR-Users] htable + event_routes + mod-init + htable:expired

Daniel-Constantin Mierla miconda at gmail.com
Tue Nov 3 10:59:17 CET 2020


Hello,

can you use 'kamctl rpc htable.dump ...' (needs the jsonrpcs module) to
be sure is not some limitation of kamcmd?

Then, you have to be aware that the item is considered expired once the
lifetime elapsed, and it should not show in rpc dump command output,
however, it is removed on-timer cycle and the event_route is executed at
this moment (not when the lifetime elapsed). Practically, the
event_route may be executed later than the moment when corresponding
$sht(...) returns $null.

Based on these considerations, the proper way to refresh the value is to
do it when you need it and $sht(...) returns $null. Or maybe use rtimer
module to refresh it before it expires.

Cheers,
Daniel

On 02.11.20 22:15, Brandon Armstead wrote:
>
> Nov  2 21:13:28 main kamailio[1331]: INFO: <script>:
> AUTH_TOKEN_EXPIRED, lets retrieve a new one
>
> Nov  2 21:13:28 main kamailio[1331]: INFO: <script>:
> AUTH_TOKEN_RECEIVED,
> {"data":{"token":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJDUllZIiwiaWF0IjoxNjA0MzUxNjA4LCJleHAiOjE2MDQzNTUyMDgsIm1ldGhvZCI6InBvc3Q6YXV0aDp0b2tlbiIsImFjY291bnQiOnsiaWQiOiIxIiwiZmlyc3RuYW1lIjoiVGVzdCIsImxhc3RuYW1lIjoiQXJtc3RlYWQiLCJlbWFpbCI6ImJyYW5kb25AY3J5eS5jb20ifSwic291cmNlIjp7ImFkZHJlc3MiOiIzNC45NC4xMjMuMTIxIn19.sUQImDqDfE-xdA1SQ-7I5TnFMZaPh8WB2c-S-ut1hog","header":{"alg":"HS256","typ":"JWT"},"payload":{"iss":"CRYY","iat":1604351608,"exp":1604355208,"method":"post:auth:token","account":{"id":"1","firstname":"Test","lastname":"Armstead","email":"brandon at cryy.com
> <mailto:brandon at cryy.com>"},"source":{"address":"34.94.123.121"}},"signature":"sUQImDqDfE-xdA1SQ-7I5TnFMZaPh8WB2c-S-ut1hog"}}}
>
> Nov  2 21:13:28 main kamailio[1331]: INFO: <script>: AUTH_TOKEN_TIME,
> 1604351608
>
>
>
> root at main:/etc/kamailio# kamcmd htable.dump server
>
> {
>
> entry: 11
>
> size: 1
>
> slot: {
>
> {
>
> name: auth::token
>
> value:
> {"data":{"token":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJDUllZIiwiaWF0IjoxNjA0MzUxNjA4LCJleHAiOjE2MDQzNTUyMDgsIm1ldGhvZCI6InBvc3Q6YXV0aDp0b2tlbiIsImFjY291bnQiOnsiaWQiOiIxIiwiZmlyc3RuYW1lIjoiVGVzdCIsImxhc3RuYW1lIjoiQXJtc3RlYWQiLCJlbWFpbCI6ImJyYW5kb25AY3J5eS5jb20ifSwic291cmNlIjp7ImFkZHJlc3MiOiIzNC45NC4xMjMuMTIxIn19.sUQImDqDfE-xdA1SQ-7I5TnFMZaPh8WB2c-S-ut1hog","header":{"alg":"HS256","typ":"JWT"},"payload":{"iss":"CRYY","iat":1604351608,"exp":1604355208,"method":"post:auth:token","account":{"id":"1","firstname":"Test","lastname":"Armstead","email":"brandon at cryy.com
> <mailto:brandon at cryy.com>"},"source":{"address":"34.94.123.121"}},"signature":"sUQImDqDfE-xdA1SQ-7I5TnFMZaPh8WB2c-S-ut1hog"}}}
>
> type: str
>
> }
>
> }
>
> }
>
>
>
>
> Nov  2 21:13:48 main kamailio[1334]: INFO: <script>:
> AUTH_TOKEN_EXPIRED, lets retrieve a new one
>
> Nov  2 21:13:48 main kamailio[1334]: INFO: <script>:
> AUTH_TOKEN_RECEIVED,
> {"data":{"token":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJDUllZIiwiaWF0IjoxNjA0MzUxNjI4LCJleHAiOjE2MDQzNTUyMjgsIm1ldGhvZCI6InBvc3Q6YXV0aDp0b2tlbiIsImFjY291bnQiOnsiaWQiOiIxIiwiZmlyc3RuYW1lIjoiVGVzdCIsImxhc3RuYW1lIjoiQXJtc3RlYWQiLCJlbWFpbCI6ImJyYW5kb25AY3J5eS5jb20ifSwic291cmNlIjp7ImFkZHJlc3MiOiIzNC45NC4xMjMuMTIxIn19.stW5JzPR-Gz3oVvQEb1wxF7I0GcZ1KjkkQhinHGEivQ","header":{"alg":"HS256","typ":"JWT"},"payload":{"iss":"CRYY","iat":1604351628,"exp":1604355228,"method":"post:auth:token","account":{"id":"1","firstname":"Test","lastname":"Armstead","email":"brandon at cryy.com
> <mailto:brandon at cryy.com>"},"source":{"address":"34.94.123.121"}},"signature":"stW5JzPR-Gz3oVvQEb1wxF7I0GcZ1KjkkQhinHGEivQ"}}}
>
> Nov  2 21:13:48 main kamailio[1334]: INFO: <script>: AUTH_TOKEN_TIME,
> 1604351628
>
>
>
> root at main:/etc/kamailio# kamcmd htable.dump server
>
> {
>
> entry: 0
>
> size: 1
>
> slot: {
>
> {
>
> name: auth::time
>
> value: 1604351628
>
> type: int
>
> }
>
> }
>
> }
>
>
>
> Nov  2 21:14:08 main kamailio[1331]: INFO: <script>:
> AUTH_TOKEN_EXPIRED, lets retrieve a new one
>
> Nov  2 21:14:08 main kamailio[1331]: INFO: <script>:
> AUTH_TOKEN_RECEIVED,
> {"data":{"token":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJDUllZIiwiaWF0IjoxNjA0MzUxNjQ4LCJleHAiOjE2MDQzNTUyNDgsIm1ldGhvZCI6InBvc3Q6YXV0aDp0b2tlbiIsImFjY291bnQiOnsiaWQiOiIxIiwiZmlyc3RuYW1lIjoiVGVzdCIsImxhc3RuYW1lIjoiQXJtc3RlYWQiLCJlbWFpbCI6ImJyYW5kb25AY3J5eS5jb20ifSwic291cmNlIjp7ImFkZHJlc3MiOiIzNC45NC4xMjMuMTIxIn19.P52y8GIkL2FEeT51WbYicjIdjdWp-1FXpIRPLHFmlw4","header":{"alg":"HS256","typ":"JWT"},"payload":{"iss":"CRYY","iat":1604351648,"exp":1604355248,"method":"post:auth:token","account":{"id":"1","firstname":"Test","lastname":"Armstead","email":"brandon at cryy.com
> <mailto:brandon at cryy.com>"},"source":{"address":"34.94.123.121"}},"signature":"P52y8GIkL2FEeT51WbYicjIdjdWp-1FXpIRPLHFmlw4"}}}
>
> Nov  2 21:14:08 main kamailio[1331]: INFO: <script>: AUTH_TOKEN_TIME,
> 1604351648
>
>
>
> root at main:/etc/kamailio# kamcmd htable.dump server
>
> {
>
> entry: 11
>
> size: 1
>
> slot: {
>
> {
>
> name: auth::token
>
> value:
> {"data":{"token":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJDUllZIiwiaWF0IjoxNjA0MzUxNjQ4LCJleHAiOjE2MDQzNTUyNDgsIm1ldGhvZCI6InBvc3Q6YXV0aDp0b2tlbiIsImFjY291bnQiOnsiaWQiOiIxIiwiZmlyc3RuYW1lIjoiVGVzdCIsImxhc3RuYW1lIjoiQXJtc3RlYWQiLCJlbWFpbCI6ImJyYW5kb25AY3J5eS5jb20ifSwic291cmNlIjp7ImFkZHJlc3MiOiIzNC45NC4xMjMuMTIxIn19.P52y8GIkL2FEeT51WbYicjIdjdWp-1FXpIRPLHFmlw4","header":{"alg":"HS256","typ":"JWT"},"payload":{"iss":"CRYY","iat":1604351648,"exp":1604355248,"method":"post:auth:token","account":{"id":"1","firstname":"Test","lastname":"Armstead","email":"brandon at cryy.com
> <mailto:brandon at cryy.com>"},"source":{"address":"34.94.123.121"}},"signature":"P52y8GIkL2FEeT51WbYicjIdjdWp-1FXpIRPLHFmlw4"}}}
>
> type: str
>
> }
>
> }
>
> }
>
>
> On Mon, Nov 2, 2020 at 12:44 PM Brandon Armstead <brandon at cryy.com
> <mailto:brandon at cryy.com>> wrote:
>
>     Also to add one more thing, I added a third static variable into
>     the mix to test when using the "bad config" just setting
>     server=>auth::name to "brandon" and introducing the 3rd variable
>     seems to just make kamailio hang when doing kamcmd htable.dump
>     server <---- (no results returned).
>
>     On Mon, Nov 2, 2020 at 12:41 PM Brandon Armstead <brandon at cryy.com
>     <mailto:brandon at cryy.com>> wrote:
>
>         Daniel,
>
>            In short kamcmd does not reflect the value set
>         in $sht(server=>auth::token)
>
>         It alternates between being set and not being set (reflecting
>         in kamcmd htable.dump
>
>         root at main:/etc/kamailio# kamcmd htable.dump server
>
>         {
>
>         entry: 11
>
>         size: 1
>
>         slot: {
>
>         {
>
>         name: auth::token
>
>         value:
>         {"data":{"token":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJDUllZIiwiaWF0IjoxNjA0MzQ2NzgzLCJleHAiOjE2MDQzNTAzODMsIm1ldGhvZCI6InBvc3Q6YXV0aDp0b2tlbiIsImFjY291bnQiOnsiaWQiOiIxIiwiZmlyc3RuYW1lIjoiVGVzdCIsImxhc3RuYW1lIjoiQXJtc3RlYWQiLCJlbWFpbCI6ImJyYW5kb25AY3J5eS5jb20ifSwic291cmNlIjp7ImFkZHJlc3MiOiIzNC45NC4xMjMuMTIxIn19.aFGWqQg31oNnw10XfZ61Xm5Jncvt7RoNri2ZuDJ6yLQ","header":{"alg":"HS256","typ":"JWT"},"payload":{"iss":"CRYY","iat":1604346783,"exp":1604350383,"method":"post:auth:token","account":{"id":"1","firstname":"Test","lastname":"Armstead","email":"brandon at cryy.com
>         <mailto:brandon at cryy.com>"},"source":{"address":"34.94.123.121"}},"signature":"aFGWqQg31oNnw10XfZ61Xm5Jncvt7RoNri2ZuDJ6yLQ"}}}
>
>         type: str
>
>         }
>
>         }
>
>         }
>
>
>         In the kamailio logs it always shows AUTH_TOKEN_RECEIVED
>         (correctly, with the correct auth token), kamcmd dump of
>         htable alternates between execution of this
>         route: htable:expired:server
>
>         Exec 1:
>
>         auth::time => [timestamp]
>
>         Exec 2:
>
>         auth::token => token
>
>         Exec 3:
>
>         auth::time => [timestamp]
>
>         So on and so forth, [ kamcmd htable.dump server ] it does not
>         correctly hold both $sht(server=>auth::time) and
>          $sht(server=>auth::token) like it should, despite kamailio
>         logs showing the HTTP_AUTH_TOKEN received message with the
>         correct auth token (100% of the time).
>
>         It's almost like there is a race condition when using the
>         modules http_client_query in both init and expired event route.
>
>         When I changed it to the resolved code block above separating
>         the calls and introducing http_async_client
>         inside htable:expired:server
>
>         The result is 100% of the time auth token exists correctly,
>         just like the logs 100% of the time show the auth token
>         received regardless of event_route implementation.
>
>         So somewhere somehow the problematic config causes the hash
>         table to not store HTTP_AUTH_TOKEN it receives and logs.
>
-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Funding: https://www.paypal.me/dcmierla

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20201103/5b920690/attachment.htm>


More information about the sr-users mailing list