#1989 `mod_adhoc` / ad-hoc command disco on Prosody 13.0.3 returns `item-not-found` even though commands are registered and executable

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

    On a host with `adhoc` and `invites_adhoc` enabled, Prosody: - advertises `http://jabber.org/protocol/commands` in disco#info - registers ad-hoc commands successfully - allows direct execution of those commands - but fails disco discovery of: - the commands node `http://jabber.org/protocol/commands` - individual command nodes such as `urn:xmpp:invite#invite` This breaks clients such as Conversations, which rely on ad-hoc command discovery to expose XEP-0401 invite UI. ### Environment - Prosody `13.0.3` - deployed via NixOS, but the issue appears to be in Prosody runtime behavior rather than config generation **What steps will reproduce the problem?** 1. Configure a host with `adhoc` and `invites_adhoc` enabled (on Prosody 13.0.3). 2. Authenticate as a local user and send disco queries to the host: - disco#info to `example.com` with no node - disco#items to `example.com` with node `http://jabber.org/protocol/commands` - disco#info to `example.com` with node `urn:xmpp:invite#invite` 3. Send a direct ad-hoc execute IQ to `example.com` for node `urn:xmpp:invite#invite`. **What is the expected output?** - disco#info on the bare host should advertise `http://jabber.org/protocol/commands` - disco#items on node `http://jabber.org/protocol/commands` should return visible ad-hoc commands - disco#info on `urn:xmpp:invite#invite` should return command node info - direct execution of `urn:xmpp:invite#invite` should work **What do you see instead?** - disco#info on the bare host *does* advertise `http://jabber.org/protocol/commands` - but disco#items on `http://jabber.org/protocol/commands` returns `item-not-found` - disco#info on `urn:xmpp:invite#invite` also returns `item-not-found` - however, direct execution of `urn:xmpp:invite#invite` succeeds and returns a valid invite result - the same pattern also affects built-in ad-hoc command nodes such as `http://jabber.org/protocol/admin#add-user` and `uptime`: node disco returns `item-not-found`, but direct execution works **What version of the product are you using? On what operating system?** Prosody 13.0.3 on Linux (NixOS container deployment). **Please provide any additional information below.** Relevant observations: - `adhoc` and `invites_adhoc` are enabled for that host - Prosody logs show commands being registered on the host, e.g.: - `urn:xmpp:invite#invite` - `urn:xmpp:invite#create-account` - A normal local user can directly execute `urn:xmpp:invite#invite` successfully - A configured admin can directly execute admin commands successfully - Plain disco#items on the bare host (no node) works normally - The failure seems specific to **node-based disco for ad-hoc commands** - This breaks Conversations/XEP-0401 discovery, because the client relies on ad-hoc command discovery to expose invite generation UI Example result pattern: - `disco#info(example.com)` → includes `http://jabber.org/protocol/commands` - `disco#items(example.com, node='http://jabber.org/protocol/commands')` → `item-not-found` - `disco#info(example.com, node='urn:xmpp:invite#invite')` → `item-not-found` - direct ad-hoc execute of `urn:xmpp:invite#invite` → success

  2. Zash on

    Thanks for the report. I am not able to reproduce. Please try the this shell command: `debug:events("example.com", "host-disco-items-node")` and report the result.

    Changes
    • tags Status-NeedInfo

New comment

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