From: Evgeniy Khramtsov Date: Tue, 28 Feb 2017 17:15:05 +0000 (+0300) Subject: Add s2s work-around for gmail.com X-Git-Tag: 17.03~52 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c3ef56702a30d7315437f80c58a13316292f4b5a;p=ejabberd Add s2s work-around for gmail.com --- diff --git a/src/xmpp_stream_in.erl b/src/xmpp_stream_in.erl index 84576bd2f..7264b6d5a 100644 --- a/src/xmpp_stream_in.erl +++ b/src/xmpp_stream_in.erl @@ -457,9 +457,16 @@ process_stream(#stream_start{lang = Lang}, %% Do not store long language tag to avoid possible DoS/flood attacks Txt = <<"Too long value of 'xml:lang' attribute">>, send_pkt(State, xmpp:serr_policy_violation(Txt, DefaultLang)); -process_stream(#stream_start{to = undefined}, #{lang := Lang} = State) -> - Txt = <<"Missing 'to' attribute">>, - send_pkt(State, xmpp:serr_improper_addressing(Txt, Lang)); +process_stream(#stream_start{to = undefined, version = Version} = StreamStart, + #{lang := Lang, server := Server} = State) -> + if Version < {1,0} -> + %% Work-around for gmail servers + To = jid:make(Server), + process_stream(StreamStart#stream_start{to = To}, State); + true -> + Txt = <<"Missing 'to' attribute">>, + send_pkt(State, xmpp:serr_improper_addressing(Txt, Lang)) + end; process_stream(#stream_start{to = #jid{luser = U, lresource = R}}, #{lang := Lang} = State) when U /= <<"">>; R /= <<"">> -> Txt = <<"Improper 'to' attribute">>,