close
Comments you submit will be routed for moderation. If you have an account, please log in first.
Modify

Opened 4 years ago

Closed 4 years ago

#191 closed bug (fixed)

YAM delete old entries in the .uidl file

Reported by: opiopi Owned by: tboeckel
Priority: high Milestone: YAM 2.7
Component: TCP/IP interface Version: nightly build
Severity: critical Keywords:
Cc: OS Platform:
Blocked By: Blocking:
Release Notes:

Description

If i click abort on the transfer window the .uidl
is deleted and doesn't contain the old enties.
To rebuild the file you must download all mails again,
but such things should never happen.

BTW: i know the new thread support and server support is
in progress but the bug is really important if you don't
have a backup of your .uidl file.

Step by step to reproduce:

  1. be sure to uncheck 'Delete mail on server' in 'TCP/IP':
  2. be sure to set 'Avoid duplicates' in 'New mail'.
  3. be sure you have already a .uidl file with some valid entries and some mails waiting on the server.
  4. now try to get mails and if the transfer window open then click 'Abort'

(BTW: i get here sometimes MuTools hits and do a bugreport for this ASAP)

5 now check your .uidl file or compare it with your backup if you have one.
It contains only the entries for the mails you received until you click 'abort'.
All other entries are deleted. :-(

Used Version: YAM 2.7-dev [OS3/m68k] (27.08.2010)
on a A2000 68k060 AOS3.9 BB2.

Attachments (0)

Change History (5)

comment:1 Changed 4 years ago by tboeckel

  • Component changed from undefined to TCP/IP interface
  • Milestone set to YAM 2.7

comment:2 Changed 4 years ago by tboeckel

  • Owner set to tboeckel
  • Status changed from new to assigned

I will try to reproduce this myself later. I had the same problem several times by now. And having to download 100+ mails again because of a broken download before is a real PITA with a crawling connection. Unfortunately I wasn't able to take a deeper look at this before, because every time I tried to enforce this issue it simply did not happen and YAM just downloaded the remaining mails.

comment:3 Changed 4 years ago by opiopi

I don't look at the sources but IMHO we need a better save routine
which doesn't destroy such important file. E.g. save the Data
to a temporary file and only if it was sucessful then delete to original
file and rename the temporary file to the original filename.
Maybe with a additional security check if the new file size is at least
equal (or bigger) as the original file size.

comment:4 Changed 4 years ago by opiopi

Since some versions my .uidl file has the size 0 after getting mails.
I have more as one account at yahoo. One is set up to don't delete the
mails on the server. From this server are the .uidl entries.

After i get mails form one of the other yahoo accounts my .uidl file
is always empty. uidl log:

00:D:      YAM_TR.c:693:added UIDL 'ALexktkAAFaVS4YUbg3DsEQ5GPc@pop.mail.yahoo.com' (0b77de58) to hash
00:D:      YAM_TR.c:693:added UIDL 'ALKxktkAAEitS4nzEQZgezcYDl8@pop.mail.yahoo.com' (0b77de62) to hash

... a lot of entries

00:D:      YAM_TR.c:693:added UIDL 'ALGxktkAAKUfS9iA/gWqVDDnI7s@pop.mail.yahoo.com' (0b77f23a) to hash
00:D:      YAM_TR.c:693:added UIDL 'ALWxktkAAJg5S/Fs5A3dvCq9Z6w@pop.mail.yahoo.com' (0b77e6f0) to hash
00:C:     YAM_TR.c:565:G->TR->UIDLhashTable->entryCount = 376, 0x00000178
00:W:      Timer.c:167:timer[6]: already stopped
00:D:      YAM_TR.c:712:removed UIDL 'AFty+FcAAQX5TH1+PAyJlXJfwGs@pop.mail.yahoo.com' from hash
00:D:       MainWindowToolbar.c:287:case 6
00:D:         YAM_TR.c:631:orphaned UIDL found and deleted 'ALexktkAAFaVS4YUbg3DsEQ5GPc@pop.mail.yahoo.com'
00:D:         YAM_TR.c:631:orphaned UIDL found and deleted 'ALKxktkAAEitS4nzEQZgezcYDl8@pop.mail.yahoo.com'

... a lot of entries (same as deleted above)

00:D:         YAM_TR.c:631:orphaned UIDL found and deleted 'ALGxktkAAKUfS9iA/gWqVDDnI7s@pop.mail.yahoo.com'
00:D:         YAM_TR.c:631:orphaned UIDL found and deleted 'ALSxktkAANJSS+sNPwoDJxWgnEI@pop.mail.yahoo.com'
00:D:       YAM_TR.c:669:successfully cleaned up UIDLhash

So the bug seems to be in the SaveUIDLtoken() function.
Seems the check for the server dosn't work like expected
or at least like before the latest changes.

comment:5 Changed 4 years ago by tboeckel

  • Resolution set to fixed
  • Status changed from assigned to closed

(In [5132]) * YAM_TR.c, tcp/pop3.c: reworked the UIDL management. First of all YAM will

use separate files for each account to avoid any mix up of (in)active and/or
(un)checked accounts. The filename will be built as ".uidl_<user>_<host>"
to be unique even for multiple accounts with the same host. The old .uidl
file will be kept as a fallback, because it may contain UIDLs of multiple
accounts. The new .uidl_* file will be written only if new entries added
added to the database. This also means that old and outdated entries will
vanish only if there are new mails to be remembered. Mails will be rem-
embered as soon as they were downloaded or just deleted. This respects the
fact that certain providers don't delete mails immediately but only after a
proper QUIT command. The result of an aborted download was that already
deleted mails were downloaded again, even if YAM was configured to avoid
duplicate mails. All this closes #191. The old style .uidl must deleted
manually if the user is sure that all contained UIDLs really don't longer
reside on the server.

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber

  • Frank Weber(Reporter, Participant)
  • Thore Böckelmann(Owner, Participant)