lib/ably/realtime/client/incoming_message_dispatcher.rb in ably-0.7.0 vs lib/ably/realtime/client/incoming_message_dispatcher.rb in ably-0.7.1

- old
+ new

@@ -52,11 +52,11 @@ logger.warn "NACK received: #{protocol_message}" nack_pending_queue_for_message_serial(protocol_message) if protocol_message.has_message_serial? when ACTION.Connect when ACTION.Connected - connection.transition_state_machine :connected + connection.transition_state_machine :connected, protocol_message.error when ACTION.Disconnect, ACTION.Disconnected connection.transition_state_machine :disconnected, protocol_message.error when ACTION.Close @@ -116,14 +116,24 @@ end def update_connection_recovery_info(protocol_message) if protocol_message.connection_key && (protocol_message.connection_key != connection.key) logger.debug "New connection ID set to #{protocol_message.connection_id} with connection key #{protocol_message.connection_key}" + detach_attached_channels protocol_message.error if protocol_message.error connection.update_connection_id_and_key protocol_message.connection_id, protocol_message.connection_key end if protocol_message.has_connection_serial? connection.update_connection_serial protocol_message.connection_serial + end + end + + def detach_attached_channels(error) + channels.select do |channel| + channel.attached? || channel.attaching? + end.each do |channel| + logger.warn "Detaching channel '#{channel.name}': #{error}" + channel.manager.suspend error end end def ack_pending_queue_for_message_serial(ack_protocol_message) drop_pending_queue_from_ack(ack_protocol_message) do |protocol_message|