Project

General

Profile

Actions

Backport #3527

closed

pop3 POPMail.unique_id hangs for large mailboxes - patch included

Added by kbaum (Karl Baum) over 14 years ago. Updated over 13 years ago.


Description

=begin
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

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0