#1331 mod_firewall: stacktrace in SUBSCRIBED? when local user goes offline

Reporter ge0rg
Owner Nobody
Created
Updated
Stars ★ (1)
Tags
  • Status-Accepted
  • Priority-Medium
  • Type-Defect
  1. ge0rg on

    I have the following shortened rules in my ::preroute chain: SUBSCRIBED? PASS. When a local user goes offline, it's triggered on the presence-unavailable going out via s2s, causing this stacktrace (because the user is offline, their roster is unavailable and thus mod_firewall assumes that the recipient is the local user): Mar 20 07:37:04 c2s5569b5f71820 debug Received[c2s]: <presence type='unavailable'> Mar 20 07:37:04 mod_firewall::preroute debug Chain "user/pass_acceptable" accepted stanza (ret false) Mar 20 07:37:04 c2s5569b5f71820 debug Presence without caps received, skipping Mar 20 07:37:04 mod_firewall::deliver debug Chain "user/pass_acceptable" accepted stanza (ret false) Mar 20 07:37:04 mod_firewall::preroute debug Chain "user/pass_acceptable" did not accept or reject stanza (ret nil) Mar 20 07:37:04 rostermanager debug load_roster: asked for: contact@xmpp.jp Mar 20 07:37:04 rostermanager debug load_roster: loading for offline user: contact@xmpp.jp Mar 20 07:37:04 storagemanager error Failed to load storage driver plugin internal on xmpp.jp: unknown-host Mar 20 07:37:04 storagemanager warn Falling back to null driver for roster storage on xmpp.jp Mar 20 07:37:04 mod_c2s error Traceback[c2s]: /usr/lib/prosody/core/storagemanager.lua:167: attempt to index field '?' (a nil value) stack traceback: /usr/lib/prosody/core/storagemanager.lua:167: in function 'open' /usr/lib/prosody/core/rostermanager.lua:111: in function 'load_roster' /usr/lib/prosody/core/rostermanager.lua:244: in function 'is_contact_subscribed' mod_firewall::user/marked_user_spam:52: in function '?' /usr/lib/prosody/util/events.lua:78: in function </usr/lib/prosody/util/events.lua:74> (tail call): ? ...-enabled/mod_log_slow_events/mod_log_slow_events.lua:12: in function <...-enabled/mod_log_slow_events/mod_log_slow_events.lua:10> (tail call): ? (tail call): ? (tail call): ? ... /usr/lib/prosody/modules/mod_c2s.lua:296: in function 'ondisconnect' /usr/lib/prosody/net/server_event.lua:226: in function </usr/lib/prosody/net/server_event.lua:213> (tail call): ? /usr/lib/prosody/net/server_event.lua:603: in function </usr/lib/prosody/net/server_event.lua:557> [C]: in function 'loop' /usr/lib/prosody/net/server_event.lua:751: in function </usr/lib/prosody/net/server_event.lua:750> [C]: in function 'xpcall' /usr/bin/prosody:400: in function 'loop' /usr/bin/prosody:431: in main chunk [C]: ?

  2. Zash on

    Thanks for the report. Did we decide if this is a bug in rostermanager or a misuse of the API by mod_firewall?

    Changes
    • tags Status-Accepted

New comment

Not published. Used for spam prevention and optional update notifications.