From: pdahorek@... Date: 2017-03-28T22:50:15+00:00 Subject: [ruby-core:80440] [Ruby trunk Feature#13379] Safe IMAP connections Issue #13379 has been reported by ahorek (Pavel Rosick��). ---------------------------------------- Feature #13379: Safe IMAP connections https://bugs.ruby-lang.org/issues/13379 * Author: ahorek (Pavel Rosick��) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- Hi, I found out that using the standard IMAP library isn't very safe. It can be forced to hang the whole application. the problem is here ``` s = @sock.gets(CRLF) ``` -> the server accepted the connection but it didn't send any data. Now I need to reboot the server because my thread is blocked forever. I have no other option but to use this ``` Timeout.timeout(timeout, Net::OpenTimeout) { Net::IMAP.new(host, port, ssl) } ``` which basically works, but I really don't want to create a new thread for each IMAP call, so I did these changes: 1/ replaced TCPSocket with Socket.tcp 2/ replaced sock.read and sock.gets with sock.read_nonblock now it works as expected. Patch https://github.com/ruby/ruby/pull/1557 related issue, please consider merging this one as well #12928 ---Files-------------------------------- imap.patch (3.29 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: