diff --git a/lib/ably/realtime/client/incoming_message_dispatcher.rb b/lib/ably/realtime/client/incoming_message_dispatcher.rb index 228abc692..5c7b43629 100644 --- a/lib/ably/realtime/client/incoming_message_dispatcher.rb +++ b/lib/ably/realtime/client/incoming_message_dispatcher.rb @@ -68,7 +68,13 @@ def dispatch_protocol_message(*args) when ACTION.Connect when ACTION.Connected - connection.transition_state_machine :connected, reason: protocol_message.error, protocol_message: protocol_message unless connection.connected? + if connection.disconnected? || connection.closing? || connection.closed? || connection.failed? + logger.debug "Incoming CONNECTED ProtocolMessage discarded as connection has moved on and is in state: #{connection.state}" + elsif connection.connected? + logger.error "CONNECTED ProtocolMessage should not have been received when the connection is in the CONNECTED state" + else + connection.transition_state_machine :connected, reason: protocol_message.error, protocol_message: protocol_message + end when ACTION.Disconnect, ACTION.Disconnected connection.transition_state_machine :disconnected, reason: protocol_message.error unless connection.disconnected?