diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-28 20:15:05 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-02-28 20:15:05 +0300 |
commit | c3ef56702a30d7315437f80c58a13316292f4b5a (patch) | |
tree | 67dc3b8ad065c88f3eb538504307cb3f44c96b95 | |
parent | Make sure all hooks are called with proper host in ejabberd_c2s (diff) |
Add s2s work-around for gmail.com
-rw-r--r-- | src/xmpp_stream_in.erl | 13 |
1 files 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">>, |