Backport #3527: pop3 POPMail.unique_id hangs for large mailboxes - patch included http://redmine.ruby-lang.org/issues/show/3527 Author: Karl Baum Status: Open, Priority: Normal Category: lib Calls to unique_id seem to not return for extremely large mailboxes. I traced this down to the POP3.set_all_uids method. The current implementation is scanning the list of mails for each unique_id resulting in an N * N operation. I modified the method a bit to first build a hash and it seems to have fixed the issue: def set_all_uids #:nodoc: internal use only (called from POPMail#uidl) number_to_mail = @mails.inject({}) { |hash, mail| hash[mail.number] = mail; hash } command().uidl.each do |num, uid| number_to_mail[num].uid = uid end end ---------------------------------------- http://redmine.ruby-lang.org