Skip to content

Commit 0925efa

Browse files
committed
[rb] fix bug causing unnecessary IO errors from sockets
1 parent baef94b commit 0925efa

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

rb/lib/selenium/webdriver/common/websocket_connection.rb

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,27 @@ def attach_socket_listener
9494
Thread.current.abort_on_exception = true
9595
Thread.current.report_on_exception = false
9696

97-
until socket.eof?
98-
incoming_frame << socket.readpartial(1024)
99-
100-
while (frame = incoming_frame.next)
101-
message = process_frame(frame)
102-
next unless message['method']
103-
104-
params = message['params']
105-
callbacks[message['method']].each do |callback|
106-
@callback_threads.add(callback_thread(params, &callback))
107-
end
108-
end
97+
read_and_process_frames until socket.eof?
98+
rescue *CONNECTION_ERRORS => e
99+
WebDriver.logger.debug("BiDi socket closed: #{e.class} - #{e.message}", id: :websocket)
100+
Thread.exit
101+
rescue StandardError => e
102+
WebDriver.logger.debug("Unexpected error in BiDi socket thread: #{e.class} - #{e.message}", id: :websocket)
103+
Thread.exit
104+
end
105+
end
106+
107+
def read_and_process_frames
108+
incoming_frame << socket.readpartial(1024)
109+
110+
while (frame = incoming_frame.next)
111+
message = process_frame(frame)
112+
next unless message['method']
113+
114+
params = message['params']
115+
callbacks[message['method']].each do |callback|
116+
@callback_threads.add(callback_thread(params, &callback))
109117
end
110-
rescue *CONNECTION_ERRORS
111-
Thread.stop
112118
end
113119
end
114120

@@ -142,7 +148,7 @@ def callback_thread(params)
142148

143149
yield params
144150
rescue Error::WebDriverError, *CONNECTION_ERRORS
145-
Thread.stop
151+
Thread.exit
146152
end
147153
end
148154

0 commit comments

Comments
 (0)