mirror of
https://github.com/faye/websocket-driver-ruby.git
synced 2025-11-01 13:59:38 +00:00
Capture errors raise by emit() and re-raise them after the parser has finished running.
This commit is contained in:
@@ -68,6 +68,8 @@ module WebSocket
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
reraise_emit_exception
|
||||
end
|
||||
|
||||
def frame(buffer, type = nil, error_type = nil)
|
||||
|
||||
@@ -38,6 +38,9 @@ module WebSocket
|
||||
@listeners[event.to_s].dup.each do |listener|
|
||||
listener.call(*args)
|
||||
end
|
||||
|
||||
rescue => error
|
||||
@emit_exception ||= error
|
||||
end
|
||||
|
||||
def listener_count(event)
|
||||
@@ -48,6 +51,16 @@ module WebSocket
|
||||
def listeners(event)
|
||||
@listeners[event.to_s]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def reraise_emit_exception
|
||||
if @emit_exception
|
||||
error = @emit_exception
|
||||
@emit_exception = nil
|
||||
raise error
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -127,6 +127,8 @@ module WebSocket
|
||||
buffer = nil
|
||||
end
|
||||
end
|
||||
|
||||
reraise_emit_exception
|
||||
end
|
||||
|
||||
def binary(message)
|
||||
|
||||
@@ -41,6 +41,7 @@ module WebSocket
|
||||
|
||||
def parse(chunk)
|
||||
@parser.parse(chunk)
|
||||
reraise_emit_exception
|
||||
end
|
||||
|
||||
def binary(message)
|
||||
|
||||
Reference in New Issue
Block a user