Skip to content

Commit 4e6da79

Browse files
committed
- socket: rescue transmit in close without logging
1 parent eba28e4 commit 4e6da79

3 files changed

Lines changed: 3 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## main
44

5+
- Tolerate `#transmit` errors on `socket.close`.
6+
57
## 0.3.2
68

79
- Add `#advance_time` test helper to channels to test periodic timers.

lib/action_cable/connection/base.rb

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,7 @@ def close(reason: nil, reconnect: true)
133133
type: ActionCable::INTERNAL[:message_types][:disconnect],
134134
reason: reason,
135135
reconnect: reconnect
136-
)
137-
rescue => error
138-
# Ignore errors when transmitting the disconnect message, e.g. if the
139-
# socket is already closed.
140-
logger.error("Failed to transmit disconnect message: #{error.message}")
141-
ensure
136+
) rescue nil
142137
socket.close
143138
end
144139

test/connection/base_test.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ def disconnect
7272
# prior restart call), so that transmitting the disconnect message raises.
7373
socket.stub(:transmit, ->(*) { raise ClosedQueueError, "queue closed" }) do
7474
assert_called(socket, :close) do
75-
# Must not propagate the error — socket.close must still be reached via ensure.
7675
connection.close(reason: "server_restart")
7776
end
7877
end

0 commit comments

Comments
 (0)