From c11922e2a22d356b74e003b547771040b48a8190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Thu, 9 Apr 2020 09:22:24 +0200 Subject: [PATCH] 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. --- src/ejabberd_c2s.erl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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} ->