Issue #14051 has been updated by shugo (Shugo Maeda).

Status changed from Open to Assigned
Assignee set to shugo (Shugo Maeda)

----------------------------------------
Bug #14051: net/imap issue on idle method with an empty block
https://bugs.ruby-lang.org/issues/14051#change-67582

* Author: simayosi (SHIMAYOSHI Takao)
* Status: Assigned
* Priority: Normal
* Assignee: shugo (Shugo Maeda)
* Target version: 
* ruby -v: 
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Description
If Net::IMAP#idle method is called with empty block,  all response handlers that have added beforehand are unintentionally removed before returning from the call.

Sample Code
  imap.add_response_handler do |resp|
    if resp.kind_of?(Net::IMAP::UntaggedResponse) and resp.name == "EXISTS"
      imap.idle_done
    end
  end
  imap.idle {}
  # the response handler firstly added is unregistered here

Cause
@response_handlers.delete(nil) is executed in Net::IMAP#remove_response_handler called from the idle method.




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>