(gdb) p *map$1 = { lhs = 0x555555adfe00, rhs = 0x555555adffd0, op = T_OP_SET, ci = 0x5555557f2230, next = 0x555555ae01a0} I'm sure that is a regression because the same code now is in production with 3.0.17. # Cache for store authentication datacache cache_auth { # driver = "rlm_cache_rbtree" driver = "rlm_cache_memcached" memcached { options = "--SERVER=localhost" pool { start = ${thread[pool].start_servers} min = ${thread[pool].min_spare_servers} max = ${thread[pool].max_servers} spare = ${thread[pool].max_spare_servers} uses = 0 lifetime = 0 idle_timeout = 60 } } key = "%{Calling-Station-Id}-%{NAS-Identifier}-auth" # The TTL of cache entries, in seconds. # This value should be between 10 and 86400. ttl = 120 add_stats = no update { &control:My-Auth := &control:My-Auth &control:My-User := &control:My-User &control:Cleartext-Password := &Control:Cleartext-Password &control:Framed-IP-Netmask := &control:Framed-IP-Network &control:Framed-Protocol := &control:Framed-Protocol &control:Pool-Name := &control:Pool-Name } } AVP available are these: Wed Jul 31 19:27:54 2019 : Debug: (0) sql: Conditional check items matched, merging assignment check itemsWed Jul 31 19:27:54 2019 : Debug: (0) sql: My-Auth := "Reject"Wed Jul 31 19:27:54 2019 : Debug: (0) sql: My-Sim := "0"Wed Jul 31 19:27:54 2019 : Debug: (0) sql: Cache-TTL := 30 And accounting section is this: accounting { update control { &Cache-Status-Only := 'yes' &Cache-Merge := 'no' } cache_auth { notfound = 1 } if (notfound) { # POST: no entry on cache. sql.authorize update control { &Cache-Status-Only := 'no' &Cache- Merge := 'yes' } cache_auth } else { # POST: entry found on cache update control { &Cache-Status-Only := 'no' &Cache- Merge := 'yes' } # Retrieve data from cache cache_auth } } # end accounting Could be related to setting of control:My-User when is not present? I will try to do a bisect. thanks for support. On Wed, 2019-07-31 at 09:04 -0400, Alan DeKok wrote:
On Jul 31, 2019, at 5:09 AM, Geaaru <geaaru@gmail.com> wrote:
Done:https://pastebin.com/qrvviLTV id="-x-evo-selection-start- marker">
Hmm... What is the configuration for the "cache" section? The assertion is that the "map" being applied by the cache section isn't in the right format. That "map" is taken from the configuration, in order to do right-side to left-side cache assignments. So something in the configuration looks to be unexpected. Also, if you could break at src/main/map.c:967, and do: (gdb) print *map That would let us know exactly what is in the "map" structure. Which then lets us fix it. Alan DeKok.