Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions lib/net/imap.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1193,9 +1193,10 @@ def tls_verified?; @tls_verified end
# Waits for receiver thread to close before returning, except when called
# from inside the connection mutex such as from a response handler. Slow or
# stuck response handlers can cause #disconnect to hang until they complete.
# Use +timeout+ to limit how long to wait for the receiver thread to exit.
#
# Related: #logout, #logout!
def disconnect
def disconnect(timeout: nil)
in_logout_state = try_state_logout?
return if disconnected?
in_receiver_thread = Thread.current == @receiver_thread
Expand All @@ -1207,7 +1208,7 @@ def disconnect
@receiver_thread.raise(e) unless in_receiver_thread
end
@sock.close
@receiver_thread.join unless mon_owned? || in_receiver_thread
@receiver_thread.join(timeout) unless mon_owned? || in_receiver_thread
raise e if e
ensure
# Try again after shutting down the receiver thread. With no reciever
Expand Down
Loading