From c3ef56702a30d7315437f80c58a13316292f4b5a Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Tue, 28 Feb 2017 20:15:05 +0300 Subject: [PATCH] Add s2s work-around for gmail.com --- src/xmpp_stream_in.erl | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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">>,