aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2020-04-09 09:22:24 +0200
committerPaweł Chmielowski <pchmielowski@process-one.net>2020-04-16 13:05:42 +0200
commitc11922e2a22d356b74e003b547771040b48a8190 (patch)
tree2f3da0390ec4a1ef0f1248f94c87e3dca442280a /src
parentResending unacked stanzas should send even archived msgs if mod_offline is en... (diff)
Make session iq response have from be set to server jid
It looks like old version of Smack don't accept request that are have from sent to sender jid, but are only working when jid is set to server address. This is also how it looks in old xmpp rfc examples.
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_c2s.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index f533fbed3..9e0274cf8 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -491,7 +491,11 @@ handle_authenticated_packet(Pkt, #{lserver := LServer, jid := JID,
#iq{type = set, sub_els = [_]} ->
try xmpp:try_subtag(Pkt2, #xmpp_session{}) of
#xmpp_session{} ->
- send(State2, xmpp:make_iq_result(Pkt2));
+ % It seems that some client are expecting to have response
+ % to session request be sent from server jid, let's make
+ % sure it is that.
+ Pkt3 = xmpp:set_to(Pkt2, jid:make(<<>>, LServer, <<>>)),
+ send(State2, xmpp:make_iq_result(Pkt3));
_ ->
check_privacy_then_route(State2, Pkt2)
catch _:{xmpp_codec, Why} ->