diff options
author | Kim Alvefur <zash@zash.se> | 2020-03-22 22:32:26 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2020-03-22 22:32:26 +0100 |
commit | 7e181e31e0fdce18e0ce326f612edb2e9428fc13 (patch) | |
tree | cf4f1b2ef55ef17d0bd71afa38704a1983c432c3 /core/moduleapi.lua | |
parent | d7f8fa848d1c2391a35ed8ebc41a9cb228466fa4 (diff) | |
download | prosody-7e181e31e0fdce18e0ce326f612edb2e9428fc13.tar.gz prosody-7e181e31e0fdce18e0ce326f612edb2e9428fc13.zip |
moduleapi: Fix handling of replies to :send_iq from internal modules
Unclear exactly why, but replies to some queries to local modules would
be discarded by stanza_router. This appears to fix it.
Diffstat (limited to 'core/moduleapi.lua')
-rw-r--r-- | core/moduleapi.lua | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/core/moduleapi.lua b/core/moduleapi.lua index 87c337d6..71239a0c 100644 --- a/core/moduleapi.lua +++ b/core/moduleapi.lua @@ -436,7 +436,16 @@ function api:send_iq(stanza, origin, timeout) return; end - self:send(stanza, origin); + local wrapped_origin = setmetatable({ + -- XXX Needed in some cases for replies to work correctly when sending queries internally. + send = function (stanza) + resolve({ stanza = stanza }); + end; + }, { + __index = origin or hosts[self.host]; + }); + + self:send(stanza, wrapped_origin); end); p:finally(function () |