Project

General

Profile

This project is closed and read-only.

Actions

Backport #3527

closed

pop3 POPMail.unique_id hangs for large mailboxes - patch included

Backport #3527: pop3 POPMail.unique_id hangs for large mailboxes - patch included

Added by kbaum (Karl Baum) about 16 years ago. Updated over 15 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: PDF Atom