#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
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
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.
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
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