diff --git a/deps/rabbit/src/rabbit_reader.erl b/deps/rabbit/src/rabbit_reader.erl index 276b6fa03f..25ba4c2cde 100644 --- a/deps/rabbit/src/rabbit_reader.erl +++ b/deps/rabbit/src/rabbit_reader.erl @@ -1119,7 +1119,14 @@ handle_input({frame_payload, Type, Channel, PayloadSize}, Data, State) -> handle_input(handshake, <<"AMQP", A, B, C, D, Rest/binary>>, State) -> {Rest, version_negotiation({A, B, C, D}, State)}; handle_input(handshake, <>, #v1{sock = Sock}) -> - refuse_connection(Sock, {bad_header, Other}); + Reason = case Other of + <<16#16, 16#03, _Ver2, _Len1, _Len2, 16#01, _, _>> -> + %% Looks like a TLS client hello. + detected_unexpected_tls_header; + _ -> + bad_header + end, + refuse_connection(Sock, {Reason, Other}); handle_input(Callback, Data, _State) -> throw({bad_input, Callback, Data}).