diff options
-rw-r--r-- | lib/plum/connection.rb | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/plum/connection.rb b/lib/plum/connection.rb index 2597790..e426853 100644 --- a/lib/plum/connection.rb +++ b/lib/plum/connection.rb @@ -109,10 +109,8 @@ module Plum end def validate_received_frame(frame) - if @state == :waiting_settings - raise ConnectionError.new(:protocol_error) if frame.type != :settings - @state = :open - callback(:negotiated) + if @state == :waiting_settings && frame.type != :settings + raise ConnectionError.new(:protocol_error) end if @state == :waiting_continuation @@ -189,6 +187,11 @@ module Plum callback(:remote_settings, @remote_settings, old_remote_settings) send_immediately Frame.settings(:ack) if send_ack + + if @state == :waiting_settings + @state = :open + callback(:negotiated) + end end def apply_remote_settings(old_remote_settings) |