Commit Graph

691 Commits

Author SHA1 Message Date
John Goerzen
e1fb9492f8 Patch for signal handling to start a sync by Jim Pryor
Here's the way I'd like to use offlineimap on my laptop:
    1. Have a regular cron job running infrequently. The cron job
    checks to see
if I'm online, plugged in, and that no other copy of offlineimap is
running. If
all of these conditions are satisfied, it runs offlineimap just once:
"offlineimap -o -u Noninteractive.Quiet"

    2. When I start up mutt, I do it by calling a wrapper script that
    delays
until cron-started copies of offlineimap have finished, then starts
    offlineimap
on its regular, stay-alive and keep checking schedule. When I quit
    mutt, the
wrapper script tells offlineimap to stop.

This way I get frequent regular checks while I have mutt running, but
I don't
waste my battery/cpu checking frequently for mail when I'm not
interested in
it.

To make this work, though, it'd be nicer if it were easier to tell
offlineimap,
from the outside, things like "terminate cleanly now" and "when you've
finished
synching, then terminate instead of sleeping and synching again."

OK, to put my money where my mouth is, I attach two patches against
offlineimap
6.0.3.

The first, "cleanup.patch", cleans up a few spots that tend to throw
exceptions
for me as offlineimap is exiting from a KeyboardInterrupt.

The second adds signaling capabilities to offlineimap.

* sending a SIGTERM tells offlineimap to terminate immediately but
  cleanly,
  just as if "q" had been pressed in the GUI interface

* sending a SIGUSR1 tells every account to do a full sync asap: if
  it's
  sleeping, then wake up and do the sync now. If it's mid-sync, then
  re-synch
  any folders whose syncing has already been started or completed, and
  continue
  to synch the other, queued but not-yet-synched folders.

* sending a SIGHUP tells every account to die as soon as it can (but
  not
  immediately: only after finishing any synch it's now engaged in)

* sending a SIGUSR2 tells every account to do a full sync asap (as
  with
  SIGUSR1), then die

It's tricky to mix signals with threads, but I think I've done this
correctly.
I've been using it now for a few weeks without any obvious
problems. But I'm passing it
on so that others can review the code and test it out on their
systems. I developed the
patch when I was running Python 2.5.2, but to my knowledge I don't use
any Python 2.5-specific
code. Now I'm using the patch with Python 2.6.

Although I said "without any obvious problems," let me confess that
I'm
seeing offlineimap regularly choke when I do things like this: start
up
my offlineimap-wrapped copy of mutt, wait a while, put the machine to
sleep (not sure if offlineimap is active in the background or idling),
move to a different spot, wake the machine up again and it acquires a
new network, sometimes a wired network instead of wifi. Offlineimap
doesn't like that so much. I don't yet have any reason to think the
problems here come from my patches. But I'm just acknowledging them,
so
that if others are able to use offlineimap without any difficulty in
situations like I described, then maybe the fault is with my patches.
2008-12-01 16:13:16 -06:00
John Goerzen
5db24303b7 Patch to make exit on Ctrl-C cleaner
From Jim Pryor

The first, "cleanup.patch", cleans up a few spots that tend to throw
exceptions for me as offlineimap is exiting from a KeyboardInterrupt.
2008-12-01 16:10:49 -06:00
John Goerzen
d69176090c New option to only work with subscribed folders
Patch from Sean Finney, slightly modified by John Goerzen to change
name of config file option

fixes deb#499588
2008-10-01 00:33:57 -05:00
John Goerzen
ab43d74549 Applied pre/post sync hooks
Patch from Sylvain FORET in refs #71
2008-10-01 00:03:04 -05:00
John Goerzen
c886987a5b Merge branch 'master' of ssh://jpgarch@complete.org/~jpgarch/git/offlineimap 2008-09-29 18:04:50 -05:00
Michael Witten
5fe379f66d imaplibutil: Remove flagrantly bad use of private attribute
Frankly, the original code doesn't even make much sense, and
moreover it's not forward compatible with python 2.6, and
furthermore:

    DeprecationWarning: socket.ssl() is deprecated.

So, this commit is just a temporary fix.

Signed-off-by: Michael Witten <mfwitten@mit.edu>
2008-09-29 17:50:50 -05:00
John Goerzen
10c2b6fbaa Apply new darwin.patch from Vincent Beffara
fixes #20
patch dated 5/27/2008
2008-09-18 09:23:37 -05:00
John Goerzen
d097da005e Prepping 6.0.3 2008-08-13 00:05:17 -05:00
Henning Glawe
140be81efd make the trash and spam folder names in Gmail accounts configurable 2008-08-13 00:03:13 -05:00
John Goerzen
9551e9d38e task_done wasn't in Python before 2.5 2008-08-11 20:38:33 -05:00
John Goerzen
1d91fb7a96 Merge branch 'master' of ssh://jpgarch@complete.org/~jpgarch/git/offlineimap 2008-08-08 13:08:08 -05:00
Ben Willard
04a6270058 Fix a bug preventing the pid file from being empty.
Convert os.getpid() to a string before writing it to the pid file in
order to avoid generating an empty pid file.
2008-08-07 21:09:11 -05:00
John Goerzen
1b9f04a564 Removed debug statements 2008-08-05 00:07:26 -05:00
John Goerzen
fe57342448 Yet another Python threading workaround.
module threading should be taken out back and shot.

Condition.wait() is a busywait loop that has negative implications for
battery consumption on laptops.

Queue.get() in blocking mode blocks SIGINT from being delivered.

Argh, argh, argh.

Closes: #493801.
2008-08-05 00:05:29 -05:00
John Goerzen
0a801457df Bump version to 6.0.2 2008-08-02 17:44:20 -05:00
John Goerzen
2a852a8f48 Rework keepalive to use time.sleep() instead of event.wait()
This should improve power-management abilities some more

The catch is that we can't wait any longer for the kathread to
terminate.  We were waiting for this in some cases.  This is probably
not a big deal.

fixes deb#434074
fixes #66
2008-08-02 17:44:03 -05:00
John Goerzen
0da6bedaa0 Eliminate one more fsync 2008-08-02 15:31:43 -05:00
John Goerzen
a5dc9a331d Bump version to 6.0.1 2008-08-02 15:13:43 -05:00
John Goerzen
fbcb157ca4 Fix syntax error in nofsync support 2008-08-02 15:11:23 -05:00
John Goerzen
8114877fae Rework threadutil to use Queue for simplification and power-friendliness
Removes code and should avoid weird Python situation that causes cpu
wakeups

fixes deb#434074
fixes #66
2008-08-02 15:10:11 -05:00
John Goerzen
2b23657db0 Added ability to disable fsync()
Passed config to LocalStatus and Maildir folders so they can look
up the fsync status
2008-08-02 14:55:08 -05:00
John Goerzen
0754bdef6a Slightly more debug info 2008-08-02 14:37:55 -05:00
John Goerzen
bd1d1010e7 Now create cur,new,tmp in '.' even if existsok is false
Otherwise, there was a race where sometimes subfolders would get created
first in the sep = '.' scneario

fixes #64
2008-08-02 14:34:51 -05:00
John Goerzen
1a15b6964f Fix for keys with -1
fixes #83
2008-07-16 14:12:38 -05:00
Mark Hymers
ca08c1e553 Add support for ssl client certificates
This patch adds sslclientcert and sslclientkey configuration
  options which are passed through to imaplib in order to allow
  the use of client certificates for authentication.

Tue Nov 13 14:44:17 CST 2007  Mark Hymers <mhy@debian.org>
2008-05-23 14:58:18 -05:00
John Goerzen
3c7edc2e4d Revert "Initial stab at showing list of folders that aren't being synced"
This reverts commit fa766b61bc.

Not going to follow this path right now
2008-05-20 01:38:42 -05:00
John Goerzen
6790c94869 Revert "Checkpointing work on mailbox deletion"
This reverts commit f58ebe390d.

Not going to follow this path right now
2008-05-20 01:38:32 -05:00
John Goerzen
f58ebe390d Checkpointing work on mailbox deletion 2008-05-20 01:38:15 -05:00
John Goerzen
fa766b61bc Initial stab at showing list of folders that aren't being synced
This isn't working right yet because two accounts could sync into one
destination
2008-05-20 01:13:36 -05:00
John Goerzen
3862c8e1a0 Poof, this is 6.0.0. 2008-05-20 00:01:51 -05:00
John Goerzen
c18f8b9fad Prepping 5.99.15; fixes: #63 2008-05-12 09:03:08 -05:00
John Goerzen
3ff37143b5 Finally fix the stupid LocalStatus folder bug, I really hope!
Noted thie code:

    statusfolder =
    statusrepos.getfolder(remotefolder.getvisiblename().\
                                         replace(remoterepos.getsep(),
                                                 statusrepos.getsep()))

in accounts.py.  Should have been using the sep of the LocalStatus all
along.

refs deb#479798, #68
2008-05-10 21:08:05 -05:00
John Goerzen
5dc33409e3 Prepping 5.99.14 2008-05-09 20:44:19 -05:00
John Goerzen
fe1d92f00e Revert some previous attempts at localstatus creation
refs deb#479798

Reverts cf080844ac
and 031e018ead
2008-05-06 18:23:48 -05:00
John Goerzen
f103c54801 Bump to 5.99.13 2008-05-06 08:51:58 -05:00
John Goerzen
5749247382 Revert "Apply darwin.patch from Vincent Beffara"
This reverts commit 9f5c8d708b.

Several people were complaining about problems.  See
http://bugs.debian.org/479677.

Closes: #479677.

refs #20.
2008-05-06 08:12:54 -05:00
John Goerzen
70a09c3a89 Version 5.99.12 2008-05-05 00:48:55 -05:00
John Goerzen
553158a81b Finally fix problem with making new folders
fixes deb#478990.  fixes #63.

Patch from Martin F. Krafft.
2008-05-05 00:08:01 -05:00
John Goerzen
9f5c8d708b Apply darwin.patch from Vincent Beffara
fixes #20

 04/27/2008 09:34 AM - Vincent Beffara

    * File darwin.patch added

OK, I finally installed an IMAPS server on my iMac, so I could test a
little further. For some reason, fixing the read() method in
imaplibutil.py did not seem to work (it hung on connecting to the
server) - however, modifying the file imapserver.py similarly to the
non-SSL case fixed the crash.

I also reduced the chunk size to 100k instead of 1M, as 1M seemed to
still trigger the memory error in some cases. Ah, and I added a
platform test, so that the patch does essentially nothing on
non-Darwin machines ...

So, still no guarantee, but the attached patch works for me. Any
comments ?

(If noone here screams in horror at my code, I will include the patch
into the Fink package and see what happens there.)
2008-05-01 15:20:56 -05:00
John Goerzen
1b0788cb24 Rev versions 2008-04-17 09:53:20 -05:00
John Goerzen
031e018ead Fixed a braino introduced in last patch
Fixes #63
2008-04-17 09:52:09 -05:00
John Goerzen
145f18ac25 5.99.10 prep 2008-04-17 00:11:15 -05:00
John Goerzen
cf080844ac Make parent dirs of localstatus folders.
fixes #63
2008-04-17 00:09:32 -05:00
John Goerzen
c046383dc2 Unify LocalStatus.py repository code with folder code
refs #63
2008-04-17 00:09:11 -05:00
John Goerzen
6fd4962b4c Version to 5.99.9 2008-03-27 00:36:32 -05:00
John Goerzen
3af221f99b Automatically create top-level localfolder for Maildirs
this is the folder Maildirs will put messages in.

Closes: #286967
2008-03-27 00:35:05 -05:00
Florian Friesdorf
7a70878ed6 typo in previous 2008-03-20 12:08:57 -05:00
Florian Friesdorf
b18f55a7e2 Ignore empty LocalStatus files
I created new IMAP folders on my server. In some moment I found offlineimap
crashed. The reason were empty LocalStatus files. From looking at the code I
have no explanation how those files came into existence.
2008-03-20 12:08:49 -05:00
Eric Dorland
f7b5aa4ba3 Bug#359213: Kerberos
* John Goerzen (jgoerzen@complete.org) wrote:
> tages 359213 help
> thanks
>
> Hi folks,
>
> Unfortunately, I lack both the expertise to add Kerberos
> authentication and a way to test this.  A patch would be very welcome
> :-)

Well it was a bit unclear but there's a patch for offlineimap attached
to Guido's message:

http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=10;filename=support-GSSAPI-via-pykerberos.diff;att=1;bug=359213

I've tried it out and it works great! Except that if the Kerberos
layer throws an exception it wouldn't fail over to plain
authentication properly. Attached is a slightly reworked patch that I
tested it in the following situations:

1. python-kerberos uninstalled, with kerberos credentials.
   Prompted for password authentication as expected.

2. python-kerberos installed, with kerberos credentials.
   Keberos authentication was successful and my mail was fetched
   without password prompting. Yeehaw!

3. python-kerberos installed, with no kerberos credentials.
   Prompted for    password authentication     as expected.

I think those are all the interesting situations. So I think this is
ready to go in, with a Suggest on python-kerberos (>=
1.0+mk080218-1).

--
Eric Dorland <eric@kuroneko.ca>
ICQ: #61138586, Jabber: hooty@jabber.com
2008-03-09 20:30:23 -05:00
John Goerzen
cf1a1b31e2 Don't crash if LocalStatus file doesn't exist yet
Closes: #470174
2008-03-09 20:27:37 -05:00
John Goerzen
db805043f2 Attempt to fix a crashing bug in Gmail driver
refs deb#469598

Bug report received in Debian.  User is having occasional trouble with Gmail
driver crashing, indicates problem may have started after switching to Gmail.

Gmail driver merged to tree in 81b86fb74 on 2008-01-03 and recently released
in beta tarballs.

BT shows:

  File "/var/lib/python-support/python2.4/offlineimap/folder/Gmail.py", line 102, in processmessagesflags
    attributehash = imaputil.flags2hash(imaputil.imapsplit(result)[1])
  File "/var/lib/python-support/python2.4/offlineimap/imaputil.py", line 88, in imapsplit
    for i in range(len(imapstring)):
TypeError: len() of unsized object

imap debug log shows:

imap:   29:58.16 > BEAL75 UID STORE 4887 +FLAGS (\Deleted)
imap:   29:58.47 < BEAL75 OK Success
imap:   29:58.47        matched r'(?P<tag>BEAL\d+) (?P<type>[A-Z]+) (?P<data>.*)' => ('BEAL75', 'OK', 'Success')
imap: imapsplit() called with input: None
imap: imapsplit() got a non-string input; working around.

looking at code for Gmail.py processmessagesflags, comments from Ricardo
indicate it was copied from the same function in folder/IMAP.py.

However, folder/IMAP.py has checks for this, added 2002-07-12 in
5342dacc & 817a10ce.  Suspect that Gmail author believed those checks
superfluous for Gmail.

Copied checks from folder/IMAP.py to folder/Gmail.py.
2008-03-08 07:47:53 -06:00
John Goerzen
6e6720d1b0 Update for 5.99.7 2008-03-04 08:32:29 -06:00
John Goerzen
3cb3a675b8 Revert "completed: * fixes behaviour when changing flags, without corresp. rights (s,d,w)"
This reverts commit 08f22be8ea.

Conflicts:

	offlineimap/folder/IMAP.py
2008-03-04 08:15:48 -06:00
John Goerzen
cabd8d1735 Revert "fix behaviour for delete/expunge, when lacking rights"
This reverts commit c305d63e00.

Zak Smith reported it continued to be a problem
2008-03-04 08:13:48 -06:00
John Goerzen
4c56514381 Prepare for 5.99.6 2008-03-03 21:42:06 -06:00
John Goerzen
9a168c573e Revert "fixes behaviour when changing flags, without corresp. rights (s,d,w)"
This reverts commit 71a76d9a61.

Zak Smith reported a problem at:

      self.processmessagesflags('+', uidlist, flags)
  File "/usr/lib/python2.5/site-packages/offlineimap/folder/IMAP.py",
  line 372, in processmessagesflags
    myrights = imapobj.myrights(self.getfullname())[1][0].split()[1]
IndexError: list index out of range

Conflicts:

	offlineimap/folder/IMAP.py
2008-03-03 21:20:53 -06:00
John Goerzen
d6f4a8dab8 Make makefolder use same temporary name as folder/LocalStatus/save 2008-03-03 12:59:40 -06:00
John Goerzen
aaf9478535 Fix bug in LocalStatus so that it writes out the header line for
folder creation
2008-03-03 12:57:56 -06:00
John Goerzen
4b563c39d9 Version 5.99.5 update 2008-03-03 04:30:13 -06:00
John Goerzen
7b4e651d12 Merge branch 'netrc-integration'
Applies patches by bboisin to add netrc support

Conflicts:

	offlineimap/repository/IMAP.py

refs #14
2008-03-03 02:27:13 -06:00
John Goerzen
9b8720a4ec Apply tabspace.diff
refs #14
2008-03-03 02:23:50 -06:00
John Goerzen
50fc49bf7f Applied netrc_v2.diff from bboissin 2008-03-03 02:21:33 -06:00
John Goerzen
1ebc45d963 Fix performance for SSL
Added WrappedIMAP4_SSL class to help fix up performance of SSL

Standard imaplib.py is really bad with this, since it reads one
character at a time.

Reported by Aaron Kaplan at
http://lists.complete.org/offlineimap@complete.org/2008/01/msg00012.html.gz

He wrote:

  I just noticed that the version of offlineimap I've been using
  (3.99.17) is well over four years old.  How time flies.  I haven't
  had any problems with it, but out of curiosity I decided to pull in
  5.99.2 from the fedora repository.  It turns out to take
  consistently over twice as long as the old version to sync the same
  account.  Is this expected?

He tracked it down at
http://lists.complete.org/offlineimap@complete.org/2008/02/msg00012.html.gz

  The following changeset is the one responsible for the difference in
  speed I was noticing between the imaplib.py that was packaged with
  older versions of offlineimap and the one that comes with python:

  * /offlineimap/head: changeset 169
    More optimizations -- this time fix readline() to not work
    character-by-character!
2008-03-03 08:22:44 -06:00
John Goerzen
08a579657a Fix handling of servers that return UIDs in some FETCH responses
closes #22

from pistore in OfflineIMAP #22:

When an IMAP flag update is performed for multiple messages, some IMAP
servers (e.g. Exchange) return the UID attribute only for some of the
FETCH untagged responses, as shown in the following log:

21:19.04 > DCKF8 UID STORE 66050,50613,52164,40043,40055,25874 +FLAGS
(\Deleted)
21:19.36 < * 35 FETCH (FLAGS (\Seen \Deleted) UID 25874)
21:19.36 < * 321 FETCH (FLAGS (\Seen \Deleted))
21:19.57 < * 322 FETCH (FLAGS (\Seen \Deleted))
21:19.57 < * 560 FETCH (FLAGS (\Seen \Deleted))
21:19.57 < * 581 FETCH (FLAGS (\Seen \Deleted) UID 52164)
21:19.62 < * 1022 FETCH (FLAGS (\Seen \Deleted))
21:19.62 < DCKF8 OK STORE completed.

Function IMAPFolder.processmessagesflags is able to manage the servers
which return the UID and the servers which do not return it, but is
not able to deal with the mixed behavior shown above.

The problem is that the fragment of function
IMAPFolder.processmessagesflags that handles the responses with UID
attribute uses variable flags to store the list of flags of the
message in the IMAP format ("flags = attributehashFLAGS?"), while the
fragment that handles the responses without UID expects variable
"flags" to contain the list of modified flags passed to the function
in Maildir format ("self.messagelist[uid]flags?.append(flag)").

As a consequence, the wrong list of flags is used for the messages
without UID, leading to the addition of "strange" flags to the Maildir
messages:

Syncing messages IMAP[INBOX] -> Maildir[.]
Adding flags   to 4 messages  on Maildir[.]
Adding flags e to 4 messages  on Maildir[.]
Adding flags d to 4 messages  on Maildir[.]
Adding flags ) to 4 messages  on Maildir[.]
Adding flags ( to 4 messages  on Maildir[.]
Adding flags l to 4 messages  on Maildir[.]
Adding flags n to 4 messages  on Maildir[.]
Adding flags t to 4 messages  on Maildir[.]
Adding flags \ to 4 messages  on Maildir[.]
Adding flags D to 4 messages  on Maildir[.]
Deleting flags T to 4 messages on Maildir[.]
Adding flags   to 4 messages  on LocalStatus[.]
Adding flags e to 4 messages  on LocalStatus[.]
Adding flags d to 4 messages  on LocalStatus[.]
Adding flags ) to 4 messages  on LocalStatus[.]
Adding flags ( to 4 messages  on LocalStatus[.]
Adding flags l to 4 messages  on LocalStatus[.]
Adding flags n to 4 messages  on LocalStatus[.]
Adding flags t to 4 messages  on LocalStatus[.]
Adding flags \ to 4 messages  on LocalStatus[.]
Adding flags D to 4 messages  on LocalStatus[.]
Deleting flags T to 4 messages on LocalStatus[.]

Fix: use a different variable to store IMAP flags when managing
messages corresponding to responses with UID attribute, e.g.:

*** IMAP.py.orig        Wed Aug 22 18:23:17 2007
--- IMAP.py     Wed Aug 22 18:22:38 2007
*************** class IMAPFolder(BaseFolder):
*** 340,348 ****
              if not ('UID' in attributehash and 'FLAGS' in
              attributehash):
                  # Compensate for servers that don't return a UID
                  attribute.
                  continue
!             flags = attributehash['FLAGS']
              uid = long(attributehash['UID'])
!             self.messagelist[uid]['flags'] =
imaputil.flagsimap2maildir(flags)
              try:
                  needupdate.remove(uid)
              except ValueError:          # Let it slide if it's not
              in the list
--- 340,348 ----
              if not ('UID' in attributehash and 'FLAGS' in
              attributehash):
                  # Compensate for servers that don't return a UID
                  attribute.
                  continue
!             lflags = attributehash['FLAGS']
              uid = long(attributehash['UID'])
!             self.messagelist[uid]['flags'] =
imaputil.flagsimap2maildir(lflags)
              try:
                  needupdate.remove(uid)
              except ValueError:          # Let it slide if it's not
              in the list

02/03/08 14:04:35 changed by js

    * attachment flags-fix.patch added.

Delete 02/03/08 14:05:24 changed by js 

Unfortunately I have to fetch some of my mail from an Exchange server
(Microsoft Exchange Server 2003 IMAP4rev1 server version 6.5.7638.1)
and I can confirm that the analysis of the problem is correct, and the
patch given here fixes the problem.

Looking at the code of the processmessagesflags() method I think it
generally is a bug that the "flags" parameter is reused as a local
variable, since the final "for uid in needupdate:" loop needs the
original value of "flags". This only worked by accident.

I'm attaching a unidiff version of the patch which applies cleanly
against Debian unstable's offlineimap 5.99.4.
2008-03-02 22:25:05 -06:00
John Goerzen
2094037de1 Truncate local status folders on creation
Should help eliminate problems with old cache

refs deb#459985, refs #19
2008-03-02 22:21:10 -06:00
John Goerzen
73485475e9 Infrastructure for notifying LocalStatus of local mailbox creations
This will let us delete LocalStatus caches when we create a local
mailbox

refs deb#459985, refs #19
2008-03-02 22:17:45 -06:00
Riccardo Murri
81b86fb74c Add Gmail IMAP special support.
New repository/folder classes to support "real deletion" of messages
thorugh Gmail's IMAP interface: to really delete a message in Gmail,
one has to move it to the Trash folder, rather than EXPUNGE it.
2008-01-03 04:56:55 +01:00
Riccardo Murri
ec89c3eb53 Add option '-f' for sync'ing only selected folders 2008-01-03 04:15:11 +01:00
Riccardo Murri
2985ddc61e Add option '-k' for overriding config options 2008-01-03 04:13:04 +01:00
Florian Friesdorf
08f22be8ea completed: * fixes behaviour when changing flags, without corresp. rights (s,d,w) 2007-07-19 17:52:29 +01:00
Florian Friesdorf
71a76d9a61 fixes behaviour when changing flags, without corresp. rights (s,d,w) 2007-07-12 05:08:47 +01:00
Florian Friesdorf
c305d63e00 fix behaviour for delete/expunge, when lacking rights
This patch maneuvers around python imaplib's mysterious read-only detection
algorithm and correctly calls the UI's deletetoreadonly(), when trying to
delete/expunge in a mailbox without having the necessary rights.
2007-07-12 04:44:11 +01:00
John Goerzen
d9109bc928 Bump version number 2007-10-19 20:32:21 +01:00
John Goerzen
24cdba3221 Undo 'Fix Maildir race' patch
This was causing OfflineIMAP to hang
2007-10-19 20:29:34 +01:00
Vincent Beffara
f549baa074 UNDO: Synchronize newly created folders both ways
This involves several changes at different places:

- syncfoldersto() takes statusfolder as an argument, and returns the
  list of new folders and the list of folders that should be ingnored,
  typically those that were deleted. Warns the user about folders that
  are present only on one side and are not synced.

- syncfoldersto() is called both ways, and on folder creation
  forgetfolders() is used to rebuild the list and take the new creation
  into account. Probably not the most efficient, since it involves
  talking to the IMAP server again, but it will rarely be used anyway.

- Locally created folders are treated separately in the synchronization,
  namely the local messages are uploaded and then the normal sync still
  occurs. If the same folder is created on both sides and contains
  messages on both sides, a two-way sync occurs.
2007-09-02 01:43:15 +01:00
John Goerzen
6caaea36e0 Fix Maildir race
fixes deb#439384

From: martin f krafft
Subject: race condition in Maildir writing

The offlineimap Maildir code checks for file existence and then
opens a file. That's open to a race condition. It's better to open
the file and fail if it already exists. The following patch does
this. It catches OSError 17 (file exists) and re-raises all others.
I'll leave it up to you to decide whether this is appropriate.
2007-10-19 01:06:18 +01:00
Vincent Beffara
b925fd1296 Synchronize newly created folders both ways
This involves several changes at different places:

- syncfoldersto() takes statusfolder as an argument, and returns the
  list of new folders and the list of folders that should be ingnored,
  typically those that were deleted. Warns the user about folders that
  are present only on one side and are not synced.

- syncfoldersto() is called both ways, and on folder creation
  forgetfolders() is used to rebuild the list and take the new creation
  into account. Probably not the most efficient, since it involves
  talking to the IMAP server again, but it will rarely be used anyway.

- Locally created folders are treated separately in the synchronization,
  namely the local messages are uploaded and then the normal sync still
  occurs. If the same folder is created on both sides and contains
  messages on both sides, a two-way sync occurs.
2007-09-02 01:43:15 +01:00
John Goerzen
cdccfd83b1 Fixed locked() for noninteractive UIs
From: "Mark A. Hershberger"

https://bugs.launchpad.net/ubuntu/+source/offlineimap/+bug/96710

the locked() method isn't implemented for non-interactive UIs, so
exceptions are thrown on cron jobs.  Ubuntu's new apport catches these
and ? well, you get the idea.

patch provided.
2007-10-10 00:12:22 +01:00
John Goerzen
3305d8cd4d Daniel Jacobowitz patches
fixes deb#433732

Date: Sun, 30 Sep 2007 13:54:56 -0400
From: Daniel Jacobowitz <drow@false.org>
To: offlineimap@complete.org
Subject: Assorted patches

Here's the result of a lazy Sunday hacking on offlineimap.  Sorry for
not breaking this into multiple patches.  They're mostly logically
independent so just ask if that would make a difference.
First, a new -q (quick) option.  The quick option means to only update
folders that seem to have had significant changes.  For Maildir, any
change to any message UID or flags is significant, because checking
the flags doesn't add a significant cost.  For IMAP, only a change to
the total number of messages or a change in the UID of the most recent
message is significant.  This should catch everything except for
flags changes.

The difference in bandwidth is astonishing: a quick sync takes 80K
instead of 5.3MB, and 28 seconds instead of 90.

There's a configuration variable that lets you say every tenth sync
should update flags, but let all the intervening ones be lighter.


Second, a fix to the UID validity problems many people have been
reporting with Courier.  As discussed in Debian bug #433732, I changed
the UID validity check to use SELECT unless the server complains that
the folder is read-only.  This avoids the Courier bug (see the Debian
log for more details).  This won't fix existing validity errors, you
need to remove the local status and validity files by hand and resync.


Third, some speedups in Maildir checking.  It's still pretty slow
due to a combination of poor performance in os.listdir (never reads
more than 4K of directory entries at a time) and some semaphore that
leads to lots of futex wake operations, but at least this saves
20% or so of the CPU time running offlineimap on a single folder:

Time with quick refresh and md5 in loop: 4.75s user 0.46s system 12%
cpu 41.751 total
Time with quick refresh and md5 out of loop: 4.38s user 0.50s system
14% cpu 34.799 total
Time using string compare to check folder: 4.11s user 0.47s system 13%
cpu 34.788 total


And fourth, some display fixes for Curses.Blinkenlights.  I made
warnings more visible, made the new quick sync message cyan, and
made all not explicitly colored messages grey.  That last one was
really bugging me.  Any time OfflineIMAP printed a warning in
this UI, it had even odds of coming out black on black!


Anyway, I hope these are useful.  I'm happy to revise them if you see
a problem.

-- 
Daniel Jacobowitz
CodeSourcery
2007-10-01 22:20:37 +01:00
John Goerzen
6949a31164 Resolve conflict 2007-10-13 07:07:30 +01:00
John Goerzen
764ba74c5f Update version 2007-08-01 02:29:06 +01:00
John Goerzen
2323fdcdb3 Additional date validity check
patch from Mike Gerber

Two times today I have found my offlineimap to have died with this same
situation. It appears as if certain types of messages (both spam in my
situation), cause offlineimap to choke. When it does it cannot proceed.
This means that when I run offlineimap, it pulls in messages from some
folders, then it hits the folder with the bad message and dies, leaving
undownloaded mail on the server. The only fix to this problem is to find
the problem message on the server and remove it by hand. This isn't such
a huge deal for me, since I run the server, but other people have to
come to me to ask me to delete these messages, and until I do they
cannot download their email.

I have captured the output by running script during one of these
incidents, this has been attached. Additionally, I have also attach the 
problematic message.

The patch seems to work for me, might need some Python wizard and better 
testing, though.

fixes deb#396443
2007-08-01 02:25:05 +01:00
John Goerzen
4e19af1513 Fix non-SSL connection
fixes deb#432727
2007-07-12 11:02:19 +01:00
John Goerzen
09d71143d7 Fix version.py importing 2007-07-10 12:57:03 +01:00
John Goerzen
84d1662482 Update changelog 2007-07-11 02:50:30 +01:00
Florian Friesdorf
3e7899a9dc IMAP.py: fixed cannot concatenate 'str' and 'list' in assert
r[1] is a list. In case it contains more than one 'str' they are concatenated
using '. '. In processmessagesflags the join is tested, for savemessagesflags I
assume that it is also needed.
2007-07-07 04:51:02 +01:00
Florian Friesdorf
ed005cbbdc UIBase config variable fix
Code is probably reached for the first time, thanks to the correct readonly
handling patch
2007-07-07 02:30:42 +01:00
John Goerzen
acc597ff28 Write current PID to ~/.offlineimap/pid
fixes deb#217550
refs deb#410181
2007-07-07 01:50:43 +01:00
John Goerzen
a381ca3977 Re-scan list of remote folders on each sync
rather than just up-front.

fixes deb#396772
2007-07-06 17:46:29 +01:00
John Goerzen
f0d48365cf Added timeouts 2007-07-06 17:37:58 +01:00
John Goerzen
4370da1dcf UNDO: Checkpointing 2007-07-05 14:49:54 +01:00
John Goerzen
7a287cef57 Checkpointing 2007-07-05 14:49:54 +01:00
John Goerzen
1af12e99a1 Tweaks to machine 2007-07-05 14:22:57 +01:00
John Goerzen
c6f01fb3c8 Machine now runs 2007-07-05 14:21:33 +01:00
John Goerzen
8da3012857 Added Machine.py 2007-07-05 12:05:06 +01:00
John Goerzen
9bee28cb13 Implement connect 2007-07-05 05:04:14 +01:00
John Goerzen
8200864f25 Retabified 2007-07-04 22:00:14 +01:00
John Goerzen
4b10e30d81 Added comment 2007-07-04 19:34:02 +01:00
John Goerzen
4867d81ca4 Correct readonly handling
Upstream imaplib now issues EXAMINE when readonly != None
offlineimap/imaplib.py's version always used SELECT
2007-07-04 19:19:06 +01:00
John Goerzen
691386b3d7 Compilation fixes 2007-07-04 19:17:27 +01:00
John Goerzen
196f35e972 Update version info 2007-07-04 19:17:14 +01:00
John Goerzen
abf9648fd8 Clean up imaplib imports 2007-07-04 18:53:48 +01:00
John Goerzen
1b9fa9ff9a Switch to imaplibutil Internaldate2Epoch 2007-07-04 18:51:57 +01:00
John Goerzen
91392b7578 Merging imaplibutil into code 2007-07-04 18:51:10 +01:00
John Goerzen
d352e034cc Remove local imaplib.py 2007-07-04 18:38:02 +01:00
John Goerzen
96fd233355 Start of work pulling code out of imaplib.py 2007-07-04 18:36:33 +01:00
John Goerzen
1e90e0fd78 Remove the Tk interfaces
These were a constant source of trouble.  Tkinter likely has multiple
memory leaks that OfflineIMAP was tickling.  I never used these, so poof,
goodbye.
2007-07-04 17:57:09 +01:00
Asheesh Laroia
35e7250187 only-write-once-to-cur-or-new.patch
I have tested this and Dovecot no longer beats offlineimap
to the punch. (-:

I achieved that by keeping the renames in tmp/ until it finally does
one last rename in new/ or cur/.
2007-06-13 04:42:15 +01:00
John Goerzen
799c867a4d Removed "print af" statements from imaplib.py
they were introduced by patch "Check all resolved addresses [deb #413030]"
and were screwing up the curses display.

refs deb#413030
2007-03-28 21:38:37 +01:00
John Goerzen
aca2a4458b UNDO: Added netrc support
thanks to bboissin plus offlineimap at gmail dot com
refs #14
2007-03-27 08:21:17 +01:00
John Goerzen
4f54887265 Improve filesystem flushing semantics
fsync the Maildir file, its final directory when writing a new message.

fsync the localstatus file and its final directory when writing the 
local status cache.

This should reduce duplication in the event of hardware trouble.

fixes #8

see thread at http://lists.complete.org/offlineimap@complete.org/2007/03/threads.html.gz
2007-03-28 21:23:18 +01:00
John Goerzen
4b564bd568 Added netrc support
thanks to bboissin plus offlineimap at gmail dot com
refs #14
2007-03-27 08:21:17 +01:00
David Favro
65a6b8aa81 Removed copyright notice; assigning copyright to John Goerzen 2007-03-16 03:45:28 +01:00
David Favro
82c215023c Removed copyright notice; assigning copyright to John Goerzen 2007-03-16 03:44:54 +01:00
David Favro
b06845fc70 UID validity diagnostics improvement
* Reduced the number of parameters passed to ui.validityproblem() because they were all just method-calls to the folder object, which is already passed as the first parameter (reduction of unnecessary complexity).

* Improved the diagnostic message for an 'UID validity problem' by including the name of the repository in which the folder resides; previously it was not possible to determine from the diagnostic alone on which side the problem was.
2007-03-15 05:41:43 +01:00
David Favro
657b470d74 UID validity diagnostics improvement
* Reduced the number of parameters passed to ui.validityproblem() because they were all just method-calls to the folder object, which is already passed as the first parameter (reduction of unnecessary complexity).
2007-03-15 05:39:15 +01:00
John Goerzen
79a596be7b Don't leave preauthtunnel zombies with autorefresh
From: Peter Colberg

Hello,

using offlineimap with the preauthtunnel option to start a remote
IMAP daemon via ssh, a zombie process is left behind during the
autorefresh sleep period if not holding the connection open.

Above behaviour is a result of using os.popen2 to spawn the tunnel
process, which makes it impossible waiting for the child process
to terminate when shutting down the tunnel.

The patch included below fixes the issue by employing the Popen
class from the subprocess module, which seems to be the preferred
way to spawn processes and connect to their pipes in any case (at
least since python version 2.4.4, which fixes a memory leak in the
subprocess module).

Regards,
Peter

fixes deb#410730
2007-03-14 02:54:19 +01:00
John Goerzen
82d5d5e675 Check all resolved addresses [deb #413030]
From: Mark Brown <broonie@sirena.org.uk>
Currently offlineimap will attempt to connect to the first address
returned by addrinfo() for the remote system and will fail if that fails
even if another result would have worked.  This is particularly common
when the remote system supports both IPv4 and IPv6 - a laptop may in
some environments have no routable IPv6 connectivity so if the IPv6
address is returned first the connect will fail even though IPv4 would
have worked.

This is actually a bug in imaplib, a copy of which is included in
offlineimap.  This patch fixes the problem by looping over all the
results returned by getaddrinfo().  Unfortunately it mangles the error
reporting slightly since I couldn't work out how to raise an appropriate
exception, though given that that that was a Python backtrace there was
work to do there anyway.

Note that I have only tested the SSL case.
2007-03-08 02:59:32 +01:00
John Goerzen
ca3a306ecc --help shows available UIs now
Thanks to Daniel Rall for the patch.
fixes #5
2007-01-11 10:15:06 +01:00
aaron
71c8b2e7c4 Configurable thread status character for ui.Curses.Blinkenlights 2006-12-11 06:12:00 +01:00
John Goerzen
2d9c1ed9b8 Updating version number to 4.0.16 2006-12-02 21:59:02 +01:00
John Goerzen
aa019172cb Handle rtime being Null when writing to Maildir
fixes #2
debian #401290
2006-12-02 21:54:26 +01:00
John Goerzen
c31f60f8df Update copyright date in Maildir.py 2006-12-02 21:54:15 +01:00
Daniel Burrows
1844cefd17 Remove a redundant (and mostly harmless) output of the error string from the Curses UI.
It looks like I accidentally recorded the wrong version of Curses.py --
originally this code was there, but I moved it over to UIBase so it would
cover the TTY UI also.
2006-12-01 12:27:12 +01:00
Daniel Burrows
dc8f3c944d Add a try: block to catch exceptions that occur before the main loop and to call ui.mainException().
I'm not sure if this is the "right" way to handle exceptions, but it does
correctly print the error message AFTER shutting down curses for me.
2006-12-01 11:59:22 +01:00
Daniel Burrows
c7894a01f0 Instead of blowing up when the account name is missing, display a useful error message that gives the correct account names. 2006-12-01 11:54:25 +01:00
Daniel Burrows
0ee7dfd435 Add parameters to terminate() that specify an (optional) error message to display on termination. 2006-12-01 11:54:12 +01:00
John Goerzen
2977f53244 Fix lack of revstr in version.py 2006-11-30 12:23:18 +01:00
John Goerzen
f2515a0b02 Updated copyright and version info for 4.0.15 2006-11-30 10:51:14 +01:00
John Goerzen
fc4e31e0db Updated homepage, refs #1 2006-11-30 10:46:51 +01:00
John Goerzen
f75a89d954 Updated copyright and version info 2006-10-19 02:04:28 +01:00
John Goerzen
a6db99a21e Add remote{host,user,pass}eval config options (need documentation yet)
From Ben Kibbey

hello,

Attached is a patch to enable evaluation of account credentials with the
remotehosteval, remoteusereval and remotepasseval configuration options.
I needed this because rather than change all my other programs
configuration settings when I change, say a password, I store them in a
file. So I call a function in pythonfile which parses the credential
file and returns the wanted info. Not really very well tested, but not
complex either. Offlineimap is great, thanks.
2006-10-17 20:55:03 +01:00
John Goerzen
89e530ff6e New restoreatime patch from Ben Kibbey
From: Ben Kibbey
Subject: Re: Removed restoratime from OfflineIMAP

On Wed, May 03, 2006 at 10:08:35PM -0500, John Goerzen wrote:
> Hi Ben,
> 
> Thanks for your restoreatime patch.
> 
> However, I have received this bug report:
> 
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=365933
> 
> After looking at the problem, here's what's going on.
> 
> The person is using IMAP as the local repository as well.
> 
> You really need to move the atime save and restore code from accounts.py
> into the repository/Maildir.py.  Then, for any new call you add to the
> Maildir repository (that will be called from outside Maildir.py), you
> need to add a corresponding default function to repository/Base.py, and
> also make sure that on folders (such as IMAP) where atime restoration
> makes no sense, no error is generated.
> 
> Let me know if that doesn't make sense to you.  If you get it fixed, I'd
> be happy to re-apply it to a future version of OfflineIMAP.
> 
> -- John Goerzen
> 

Attached is a new diff that should work though not really tested
(v4.0.14). In repository/Base.py restore_atime() will call
self.restore_folder_atimes() only if the folder type is Maildir. Let me
know if it has any more problems.
2006-09-06 02:33:07 +01:00
John Goerzen
9d7df0e21a Fix up date parsing to use message date if no rtime is available 2006-08-22 02:13:39 +01:00
John Goerzen
03488ba81b Sync INTERNALDATE <-> mtime
The attached patch adds syncing the INTERNALDATE of IMAP folders with
the mtime of messages in maildir folders.
I want this to happen, because I'm running a dovecot over the maildirs
synced by offlineimap, and that uses the mtime as the INTERNALDATE.
When using mutt to view messages I generally sort based on the received
date, which for IMAP folders is the INTERNALDATE.

Since this is the first real coding I've done in Python the patch may
need to be cleaned up some, but it's working pretty well for me.  I've
added new messages to each side, and the received date has been
preserved going both ways.
2006-08-22 02:09:36 +01:00
John Goerzen
39a18fef60 Update FSF address 2006-08-12 05:15:55 +01:00
Adam Spiers
5fc0e1ae42 helpful comments 2006-05-16 04:40:23 +01:00
Adam Spiers
b39845c488 stop UID FETCH 0 errors 2006-05-16 04:31:44 +01:00
Adam Spiers
2e52bcdafe failure to obtain uid indicated by savemessage_searchforheader return value <= 0, not ValueError 2006-05-16 04:30:48 +01:00
Adam Spiers
720511f3f1 add missing ) 2006-05-16 04:27:57 +01:00
Adam Spiers
f2d4c668d5 return 0 rather than raise exception to indicate that message was saved with unknown UID 2006-05-16 03:34:46 +01:00
Adam Spiers
f11a49f263 make savemessage_searchforheader more robust 2006-05-15 03:51:12 +01:00
John Goerzen
8064ee26bd Prepping 4.0.13 2006-05-04 18:37:20 +01:00
John Goerzen
5a6b2a1ebd Revert restoreatime patch 2006-05-04 09:05:46 +01:00
John Goerzen
c0d031e760 Remove parens for SEARCH command
Patch from Adam Spiers

Reported that parens were causing trouble for Groupwise IMAP server
2006-05-01 20:40:55 +01:00
John Goerzen
405275f541 New restoreatime patch
From: Ben Kibbey <bjk@luxsci.net>

Attached is a patch to restore the atime of Maildir folders after
syncing. It can be enabled via the 'restoreatime' boolean in the
configuration file. I needed this because offlineimap is run after a
fetchmail and my mail checker breaks.
2006-03-02 00:12:29 +01:00
John Goerzen
fabbf81c1a Workaround for bug in Exchange
With help from Mark R. Biggers, I discovered that Exchange doesn't like an
asterisk in a folder name.

Sigh.
2005-10-07 20:11:20 +01:00
John Goerzen
27fae4e7ac Readying 4.0.11 release 2005-08-24 19:07:15 +01:00
John Goerzen
1f25b5393b [324827] Fixed handling of invalid dates
Patch from Nikita V. Youshchenko

From: "Nikita V. Youshchenko" 
To: Debian Bug Tracking System
Subject: offlineimap: exception on mail with broken headers (+fix)
Date: Wed, 24 Aug 2005 13:41:08 +0400

Package: offlineimap
Version: 4.0.10
Severity: normal
Tags: patch

Recently I've got an exception (see below) while using offlineimap.
Exception was probably caused by invalid Date header of (likely spam)
message:
Date: Sat, 20 Aug 2005 4294967295:43:18 -0700
2005-08-24 19:01:42 +01:00
John Goerzen
0841e03a4c [319117] Unroll loop to speed performance on large folders
From: "Nikita V. Youshchenko"
I trued to use offlineimap and found that while being quite fast on
small folders, it takes up to several minutes (of 100% busy CPU and
almost no network traffic) to sync a folder with 2000+ messages.

While looking into the code, I found why this happens.
In folder/Base.py, in method BaseFolder.syncmessagesto_copy(),
dest.getmessagelist() is called inside a loop, while being a loop
invariant. Similar thing happens in BaseFolder.syncmessagesto_delete()
for self.getmessagelist().
This causes quadratic complexity over folder size.

Moving these calls out of loops make large folder sync fast (several
seconds instead of several minutes for folder with 2000 messages on
700MHz P3).
2005-08-23 08:15:09 +01:00
John Goerzen
ea4158dd6d Updated copyright and version files for 4.0.10 2005-05-24 00:12:58 +01:00
John Goerzen
d484b7da44 Removed unnecessary blank lines 2005-05-24 00:10:11 +01:00
John Goerzen
cf4a3b1861 Support IPv6 with SSL
Fix for Debian #309965.
2005-05-24 00:09:21 +01:00
John Goerzen
c42ad3ae55 Removed dep on profile
Keywords: 


(jgoerzen@complete.org--projects/offlineimap--head--1.0--patch-8)
2005-02-10 05:37:33 +01:00
John Goerzen
36d79a5c1f Checkpointing for .8
Keywords: 


(jgoerzen@complete.org--projects/offlineimap--head--1.0--patch-5)
2004-11-16 23:44:41 +01:00
John Goerzen
8137e53c14 Added code to limit command line length for very large mailboxes
Keywords: 


(jgoerzen@complete.org--projects/offlineimap--head--1.0--patch-4)
2004-11-16 23:41:09 +01:00
John Goerzen
440ee1708d Attempt to fix problem with getting back the wrong UID from APPENDUID
Keywords: 


(jgoerzen@complete.org--projects/offlineimap--head--1.0--patch-1)
2004-10-18 20:00:29 +01:00
John Goerzen
944209b858 Initial base-0 from arch 2005-04-16 20:35:25 +01:00
John Goerzen
d839be3c61 Step 2 of SVN to arch tree conversion 2005-04-16 20:33:35 +01:00
John Goerzen
3673e4c5d4 Step 1 of converting tree to Arch layout 2005-04-16 20:32:25 +01:00
jgoerzen
c406081209 /offlineimap/head: changeset 593
Fixed silly error
2004-08-02 04:42:57 +01:00
jgoerzen
dff3c0a97a /offlineimap/head: changeset 592
This is 4.0.7
2004-08-02 03:50:23 +01:00
jgoerzen
cf464889bf /offlineimap/head: changeset 591
Added additional debugging for IMAP download
2004-08-02 03:49:16 +01:00
jgoerzen
e23d476f9c /offlineimap/head: changeset 590
Preparing 4.0.6
2004-07-26 21:47:36 +01:00
jgoerzen
dd9f6475e6 /offlineimap/head: changeset 589
Various bug fixes and enhancements
2004-07-26 21:37:45 +01:00
jgoerzen
c1f25e5030 /offlineimap/head: changeset 588
Updated for 4.0.5
2004-07-13 21:25:27 +01:00
jgoerzen
6cfdefe7f7 /offlineimap/head: changeset 587
Updated ChangeLog
2004-07-13 21:24:46 +01:00
jgoerzen
e6d6663d6f /offlineimap/head: changeset 586
Added python, python-dev to build-deps.
2004-07-13 21:22:41 +01:00
jgoerzen
534961d299 /offlineimap/head: changeset 585
Updated changelog
2004-06-15 15:45:13 +01:00
jgoerzen
ae2d09a95c /offlineimap/head: changeset 584
Preparing 4.0.4
2004-06-15 15:44:05 +01:00
jgoerzen
35c7b66862 /offlineimap/head: changeset 583
Reverted patch from Daniel James and updated Changelog.
2004-06-15 15:43:14 +01:00
jgoerzen
98e35afd42 /offlineimap/head: changeset 582
Updated copyright info
2004-06-04 22:04:29 +01:00
jgoerzen
cff7f857b3 /offlineimap/head: changeset 581
Use dh_python
2004-06-04 21:50:57 +01:00
jgoerzen
094fd6eda8 /offlineimap/head: changeset 580
Final changes before 4.0.3
2004-06-04 21:47:21 +01:00
jgoerzen
246eda9c3d /offlineimap/head: changeset 579
Preparing 4.0.3
2004-06-04 21:42:52 +01:00
jgoerzen
69abd0e656 /offlineimap/head: changeset 578
Applied patch from Daniel James to adjust the insertion point for a
new header.
2004-06-04 21:29:24 +01:00
jgoerzen
e95dae8c3f /offlineimap/head: changeset 577
Fixed various doc bugs
2004-06-04 21:26:30 +01:00
jgoerzen
c8001aa5cf /offlineimap/head: changeset 576
Moved to Python2.3 and bumped version number
2004-06-04 21:13:11 +01:00
jgoerzen
c51c5c6596 /offlineimap/head: changeset 575
Fixed missing _display in Noninteractive.
2003-11-01 04:18:56 +01:00
jgoerzen
69433259cd /offlineimap/head: changeset 574
Slight changelog fix for 4.0.1
2003-10-11 10:23:47 +01:00
jgoerzen
6051f47b28 /offlineimap/head: changeset 521
A few fixes for Jython compatibility.
2003-07-26 03:01:25 +01:00
jgoerzen
ef95d2e5e7 /offlineimap/head: changeset 520
Updated docs
2003-07-26 02:47:18 +01:00
jgoerzen
93449e0132 /offlineimap/head: changeset 519
Updated docs with some history
2003-07-26 02:41:35 +01:00
jgoerzen
aabf02f155 /offlineimap/head: changeset 518
Fixed a problem with the version number printout routine.
2003-07-25 03:15:27 +01:00
jgoerzen
e0691da50f /offlineimap/head: changeset 517
Adjusted __init__ code to use __all__ to provide better compatibility
with jython.
2003-07-25 02:58:20 +01:00
jgoerzen
7a5434168f /offlineimap/head: changeset 515
Included more docs in Debian package.
2003-07-19 03:13:04 +01:00
jgoerzen
4cf7ee72d9 /offlineimap/head: changeset 514
Fixed a manpage typo. Closes: [debian.org #201497] Notify: bk@bk.cx
2003-07-19 02:59:56 +01:00
jgoerzen
56ddbcc518 /offlineimap/head: changeset 511
Final version number updates
2003-07-19 00:56:15 +01:00
jgoerzen
b8a3bcb0a1 /offlineimap/head: changeset 510
Final commits before 4.0. This is the re-built manual and updated
ChangeLog.
2003-07-19 00:54:18 +01:00
jgoerzen
ded1261411 /offlineimap/head: changeset 509
Added a section on upgrading to the documentation
2003-07-19 00:49:13 +01:00
jgoerzen
b62de2b09a /offlineimap/head: changeset 487
Fixed version confusion
2003-06-27 01:03:07 +01:00
jgoerzen
282a05dbfa /offlineimap/head: changeset 486
Prep for 3.99.19
2003-06-27 00:38:47 +01:00
jgoerzen
d636f95d45 /offlineimap/head: changeset 485
Applied patch from Joerg Wendland <joergland@debian.org> to use
APPENDUID result from mail servers that provide it. Closes: #198772.
Resolves: [debian.org #198772]
2003-06-27 00:28:54 +01:00
jgoerzen
96ac95c13f /offlineimap/head: changeset 484
Added a "force" option to imapserver/select to force a reloading of a
folder. Per [complete.org #67], when cachemessagelist() was called on
an object that was cached from a previous run, it would not re-issue
the select(). Closes: [complete.org #67]
2003-06-02 22:17:29 +01:00
jgoerzen
45265467a9 /offlineimap/head: changeset 482 2003-06-02 22:11:51 +01:00
jgoerzen
3b849724da /offlineimap/head: changeset 481
Updated
2003-06-02 22:09:57 +01:00
jgoerzen
d9c353b67a /offlineimap/head: changeset 480
Fixed the -l option
2003-06-02 20:52:33 +01:00
jgoerzen
332d07b4b0 /offlineimap/head: changeset 479
Made -d recognized
2003-06-02 20:07:30 +01:00
jgoerzen
022655dddd /offlineimap/head: changeset 478
Added -l option. Updated documentation for it. Changed _msg to
_display override in UI modules. Renamed "doc" to "docs" target in
Makefile to avoid conflicting with a subdir.
2003-06-02 20:06:18 +01:00
jgoerzen
d52c007857 /offlineimap/head: changeset 477
Fixed SSL for Python2.3.
2003-05-28 04:01:27 +01:00
jgoerzen
ce125cc366 /offlineimap/head: changeset 475
Preparing for 3.99.17
2003-05-06 20:27:36 +01:00
jgoerzen
b36c52d5af /offlineimap/head: changeset 474
- offlineimap (3.99.17) unstable; urgency=low

- Fixed two potential obscure race conditions in folder/Maildir.py. +
  Condition 1 involved the gettimeseq() function. This function
  accesses per-module variables but does not have a lock. It may have
  been possible for this to have been called in such a way that
  timeseq was not properly updated. + Condition 2 involved the call to
  gettimeseq(). Since the timeseq is based on the system clock, we now
  use the time as reported inside timeseq() rather than outside. This
  way, we can be assured that the same value is in use both places.

- Added debug code to savemessage in folder/Maildir.py to try to track
  down a mysterious 0-length file bug. -- John Goerzen
  <jgoerzen@complete.org> Tue, 6 May 2003 09:21:38 -0500
2003-05-06 20:26:12 +01:00
jgoerzen
4ab1ebf4a8 /offlineimap/head: changeset 472
Prepping for 3.99.16
2003-05-06 19:50:01 +01:00
jgoerzen
5454489a16 /offlineimap/head: changeset 471
- Added some significant debug code to folder/IMAP.py when saving a
  new message with APPEND. This should make it easier to track down
  bugs both in OfflineIMAP and in mail servers that implement this
  poorly.

- Fixed adding of X-OfflineIMAP header when the message starts out
  with no headers. (This should not generally occur.) This should help
  with some "invalid literal for long()" problems.
2003-05-06 19:41:13 +01:00
jgoerzen
7ddce0b57d /offlineimap/head: changeset 470
Added a note about the Debian bug this closes.
2003-04-30 03:54:07 +01:00
jgoerzen
422b5ea815 /offlineimap/head: changeset 469
Added from rev 5
2003-04-30 02:18:17 +01:00
jgoerzen
afba647f62 /offlineimap/head: changeset 467
When sep was /, the new Maildir support code would recursively try to
scan ., resulting in huge paths and an eventual crash. Fixed with a
one-line patch to Maildir.py. Closes: [complete.org #60] Sergei, The
below diff is going into 3.99.16. You can apply it to 3.99.15 and it
should work for you now. Please let me know. (Ignore any patch errors
for debian/changelog). Thanks for the report.
2003-04-29 22:30:26 +01:00
jgoerzen
3432a5e395 /offlineimap/head: changeset 466
Testing bug mailing
2003-04-29 21:48:52 +01:00
jgoerzen
ebf47b76c9 /offlineimap/head: changeset 465
This is more testing. Closes: [complete.org #62]
2003-04-29 21:46:05 +01:00
jgoerzen
ec0ed5b082 /offlineimap/head: changeset 464
Testing BTS actions. Notify: jglt@complete.org Notify: [complete.org
#62], [debian.org #154165]
2003-04-29 21:38:05 +01:00
jgoerzen
de4f3544e7 /offlineimap/head: changeset 463
Readying to accept changes, captain
2003-04-29 19:13:52 +01:00
jgoerzen
d2db8e5b17 /offlineimap/head: changeset 462
Updated copyright date. Notify: jgoerzen@complete.org,
jgoerzen@debian.org
2003-04-29 09:38:20 +01:00
jgoerzen
2031dc7670 /offlineimap/head: changeset 461
Updated the ChangeLog
2003-04-29 09:35:50 +01:00
jgoerzen
1043658491 /offlineimap/head: changeset 459
Preparing for 3.99.15
2003-04-29 03:41:50 +01:00
jgoerzen
ce12331573 /offlineimap/head: changeset 458
autorefresh may now be a floating-point value. Closes: #190060.
2003-04-29 03:25:42 +01:00
jgoerzen
56ac894f41 /offlineimap/head: changeset 457
Made OfflineIMAP IPv6-aware. Used the short patch from Adriaan Peeters
<apeeters@lashout.net> in Debian bug report 186636. Closes: #186636.
2003-04-29 03:17:30 +01:00
jgoerzen
044877a5f5 /offlineimap/head: changeset 456
Fixed a silly error relating to handling of the remotepassfile.
Closes: #189935.
2003-04-29 02:52:03 +01:00
jgoerzen
0ff4f610de /offlineimap/head: changeset 455
Raise an exception when the status area is locked. This will cause UIs
to go through their normal exception handling code. In particular, for
the Curses.Blinkenlights interface, the Curses module will be stopped
and the error message will be printed on the console. Previously, this
error message would not have been visible. Closes: #185709.
2003-04-29 02:48:55 +01:00
jgoerzen
eab7170aea /offlineimap/head: changeset 454
Updated bug closing number
2003-04-29 02:43:41 +01:00
jgoerzen
45e8543541 /offlineimap/head: changeset 453
Backed out removal of SYNC_WITH_TIMER_TERMINATE code to deal with
completed syncs. Without this code, -o broke because the app would
never terminate.
2003-04-29 01:04:22 +01:00
jgoerzen
30d18b0e3f /offlineimap/head: changeset 451
Updated for 3.99.14
2003-04-28 20:16:58 +01:00
jgoerzen
a206290329 /offlineimap/head: changeset 450
Preparing for 3.99.14
2003-04-28 20:16:30 +01:00
jgoerzen
0db32b6393 /offlineimap/head: changeset 449
- Slight renaming in offlineimap.conf.minimal to clarify things.

- Documentation updated with information about new features. Closes:
  #189771. + Described IMAP-IMAP syncing + Updated minimal example
  with new offlineimap.conf.minimal + Updated UID information. Added
  link to recent mailing list discussion. + Described KMail syncing,
  which now works. + Added link to mailing list archives.
2003-04-22 21:47:25 +01:00
jgoerzen
0373766d70 /offlineimap/head: changeset 448
Fixed the regular expression that fixes line endings to make sure to
deal with \n\n properly.
2003-04-19 02:44:10 +01:00
jgoerzen
2288c0d37a /offlineimap/head: changeset 447
Added the ability to use the top level of a Maildir as folder named
".". Useful for generating Maildir trees for a Courier server.
2003-04-18 08:14:45 +01:00
jgoerzen
ce02e1c514 /offlineimap/head: changeset 446
Prepping for 0.99.13 -- fixed some niggling bugs
2003-04-18 08:06:04 +01:00
jgoerzen
79ab74a418 /offlineimap/head: changeset 445
- Now checks that SELECT succeeded when entering a folder.

- Verifies that folders listed on folderincludes actually exist by
  trying to enter them. Thus, if they do not exist, they can be
  created on the first run.
2003-04-18 05:31:25 +01:00
jgoerzen
ced2acc6cf /offlineimap/head: changeset 444
Fixed line-ending code to deal with files with mixed \n and \r\n
codes. This is a rare case, but now is more onerous because we now
have to find headers.
2003-04-18 05:18:54 +01:00
jgoerzen
b9f2eca42c /offlineimap/head: changeset 443
Fixed account names in password prompts
2003-04-18 03:43:54 +01:00
jgoerzen
faf26007b1 /offlineimap/head: changeset 442
Moved account-sep branch to head
2003-04-18 03:18:34 +01:00
jgoerzen
0f81229c68 /offlineimap/head: changeset 367
Reverted the license change
2003-04-16 20:23:45 +01:00
jgoerzen
12e08b1c62 /offlineimap/head: changeset 366 2003-04-02 05:59:13 +01:00
jgoerzen
7eb2bd9cd9 /offlineimap/head: changeset 365
Removed debug code
2003-03-14 00:48:42 +01:00
jgoerzen
fa51422580 /offlineimap/head: changeset 364
Removed debug code
2003-03-14 00:47:38 +01:00
jgoerzen
a09ff54b6e /offlineimap/head: changeset 363
Fixed ability to resize windows under Curses.
2003-03-14 00:47:09 +01:00
jgoerzen
3af9200226 /offlineimap/head: changeset 361
Updated for 3.99.10
2003-03-13 23:33:02 +01:00
jgoerzen
30ea5aa8a2 /offlineimap/head: changeset 360
Clarified license terms
2003-03-05 03:42:38 +01:00
jgoerzen
096e7da976 /offlineimap/head: changeset 359
Updated ChangeLog
2003-03-03 23:44:37 +01:00
jgoerzen
ddffdefb1c /offlineimap/head: changeset 358 2003-03-01 22:31:30 +01:00
jgoerzen
f826607c08 /offlineimap/head: changeset 357
Always do a flush in Noninteractive when writing out data.
2003-02-08 03:12:47 +01:00
jgoerzen
22d82d0949 /offlineimap/head: changeset 355
Readying 3.99.9
2003-02-06 03:56:24 +01:00
jgoerzen
0c94499a91 /offlineimap/head: changeset 354
Clarified multiple invocations
2003-01-30 03:36:13 +01:00
jgoerzen
fa250e47cb /offlineimap/head: changeset 353
Noted closing
2003-01-30 03:32:11 +01:00
jgoerzen
7b9b102e5e /offlineimap/head: changeset 352
Added check to make sure that two processes do not run in the same
directory at once.
2003-01-30 02:19:53 +01:00
jgoerzen
897e93700d /offlineimap/head: changeset 351
Fixed color on FreeBSD, and exceptions for non-color terminals
2003-01-11 00:47:35 +01:00
jgoerzen
9f76bac96f /offlineimap/head: changeset 350
Fixed a small typo
2003-01-09 09:01:29 +01:00
jgoerzen
802b7a8fff /offlineimap/head: changeset 348
This is prep for 3.99.7
2003-01-09 08:43:11 +01:00
jgoerzen
3cb8fb0062 /offlineimap/head: changeset 347
Preparing for 3.99.7
2003-01-09 03:16:07 +01:00
jgoerzen
399f7d9de9 /offlineimap/head: changeset 346
Initial phase of conversion to SGML documentation complete.
2003-01-09 00:03:58 +01:00
jgoerzen
6658c0bd65 /offlineimap/head: changeset 345
Finished first draft of doc conversion
2003-01-08 23:12:49 +01:00
jgoerzen
51cc4cd0ea /offlineimap/head: changeset 344 2003-01-08 22:13:21 +01:00
jgoerzen
c2de04ee36 /offlineimap/head: changeset 343 2003-01-08 22:08:01 +01:00
jgoerzen
caacad8b43 /offlineimap/head: changeset 342 2003-01-08 21:48:41 +01:00
jgoerzen
c666632af2 /offlineimap/head: changeset 341 2003-01-08 21:40:39 +01:00
jgoerzen
586c732cc9 /offlineimap/head: changeset 340
Fixed a braino for VerboseUI
2003-01-08 10:15:18 +01:00
jgoerzen
40d9c58016 /offlineimap/head: changeset 339 2003-01-08 06:02:43 +01:00
jgoerzen
9ee3b23c15 /offlineimap/head: changeset 338
Fixed keywords
2003-01-08 05:45:16 +01:00
jgoerzen
6b8145756c /offlineimap/head: changeset 337 2003-01-08 05:44:07 +01:00
jgoerzen
d6a58cdbf3 /offlineimap/head: changeset 336 2003-01-08 04:04:35 +01:00
jgoerzen
fbb0a21ccf /offlineimap/head: changeset 335
Starting to write it.
2003-01-08 03:05:27 +01:00
jgoerzen
9c89174fb8 /offlineimap/head: changeset 334
Added keyword expansion
2003-01-08 02:20:58 +01:00
jgoerzen
be5ff7f89e /offlineimap/head: changeset 333
Documentation being rewritten in DocBook
2003-01-08 02:18:33 +01:00
jgoerzen
4caecdbd72 /offlineimap/head: changeset 332
Fixed copyright year
2003-01-07 05:01:40 +01:00
jgoerzen
8bea6112a8 /offlineimap/head: changeset 330
Removed debug code. OK, NOW this is 3.99.6 :-)
2003-01-07 04:57:58 +01:00
jgoerzen
16156993b3 /offlineimap/head: changeset 329
This is 3.99.6
2003-01-07 04:56:08 +01:00
jgoerzen
ae6e182a2c /offlineimap/head: changeset 328
Better cleaning up, install new example.
2003-01-07 04:47:15 +01:00
jgoerzen
2d0ef8af4b /offlineimap/head: changeset 327
Bumped version number to 3.99.6
2003-01-07 04:37:27 +01:00
jgoerzen
f601a9850c /offlineimap/head: changeset 326
Added minimal config file; noted this in changelog
2003-01-07 04:30:37 +01:00
jgoerzen
16b3ce90ca /offlineimap/head: changeset 325
Touched up the isactive tests. Added defaults for many more options.
2003-01-07 04:15:22 +01:00
jgoerzen
1cc5cfda0a /offlineimap/head: changeset 324
Updated documentation and information with information about new
settings
2003-01-07 03:37:19 +01:00
jgoerzen
0c7bdb2630 /offlineimap/head: changeset 323
Due to possibly having one account sleep while another is reading a
password, and other tricky situations, support for nice updating and
cancelling of a sleep in TTY.TTYUI has been removed. However, this is
not going to be a huge problem because the new Curses Blinkenlights
interface has this support, and does it a lot better than TTY.TTYUI
ever could have.
2003-01-07 03:21:46 +01:00
jgoerzen
519a294e38 /offlineimap/head: changeset 322
Curses interface now can sleep, too. Woohoo.
2003-01-07 03:18:09 +01:00
jgoerzen
cb9c4d1df9 /offlineimap/head: changeset 321
More fine-tunning. Looks like using the grid manager is helping out.
2003-01-07 01:18:06 +01:00
jgoerzen
8eea66bc36 /offlineimap/head: changeset 320
Reworked the canvas. Before, problem was the label and buttons to the
right of the lights would make the window too wide. When the button
got added, the window would get even wider. That was because the
canvas would not shrink. My workaround is to use a separate canvas for
each light. Seems to be OK here....
2003-01-07 01:00:43 +01:00
jgoerzen
612a8e4ac4 /offlineimap/head: changeset 319
Working better now.
2003-01-07 00:31:19 +01:00
jgoerzen
b16f14e65a /offlineimap/head: changeset 318
More visual tweaking. The Button doesn't seem to be working well, so
I'm going to try a MenuButton.
2003-01-07 00:14:17 +01:00
jgoerzen
6a0bbe2529 /offlineimap/head: changeset 317
Basic Tk.Blinkenlights structure completed. Need to fine-tune the
display. Sleeping API added to Blinkenlights base class.
2003-01-07 00:04:40 +01:00
jgoerzen
c381f973f1 /offlineimap/head: changeset 316
Noted a few things for the docs
2003-01-06 23:19:00 +01:00
jgoerzen
99e9c22cec /offlineimap/head: changeset 315
Fixed up the VerboseUI for new account system. All that really needed
updating with the "Sync immediately" button, to cope with syncing
different accounts at different times. It's better now.
2003-01-06 23:15:15 +01:00
jgoerzen
9c761cddad /offlineimap/head: changeset 314
More locking updates. Introduced a new MultiLock to threadutil. This
lock will let a single thread acquire the same lock more than once,
keeping track of how many times this happens, and will release the
actual lock only when the lock's lock count gets back to zero. By
using MultiLock, various functions in Curses.py and Blinkenlights.py
no longer need to pass around to other functions a parameter
indicating whether or not a lock should be obtained. This was a large
cause of complexity and errors, which is now eliminated. Everything
seems to be working properly wrt locking at this point. The
Curses.Blinkenlights interface has achieved basic working
functionality.
2003-01-06 22:58:29 +01:00
jgoerzen
510fa037d8 /offlineimap/head: changeset 313
Just to be sure, since it could be called by multiple threads,
genmbnames will not lock itself.
2003-01-06 21:41:14 +01:00
jgoerzen
f652bc5bac /offlineimap/head: changeset 312
Updated the mbnames recorder to bring it back up-to-date with the new
account-centric system. It will now gather reports from account sync
threads, and when it has all that it's supposed to, it'll write out
the file.
2003-01-06 21:40:23 +01:00
jgoerzen
930f94fbb1 /offlineimap/head: changeset 311
Fixed a problem that prevented it from working on the console.
2003-01-06 12:11:00 +01:00
jgoerzen
752b7d84e7 /offlineimap/head: changeset 310
Added some temporary debug code to help weed out a few race conditions
with the curses Blinkenlights interface. Think I've finally got it.
I'm leaving the debugging code in for now, though, to help in case
there are future problems.
2003-01-06 12:07:16 +01:00
jgoerzen
2b9c425091 /offlineimap/head: changeset 309
More progress with bug fixes and locking
2003-01-06 05:54:59 +01:00
jgoerzen
d6b790a7da /offlineimap/head: changeset 308
More progress at debugging. The curses blinkenlights is now working
well, though it still has an occasional tendency to corrupt the light
display with comments from the log. I suspect a locking problem --
need to be more strict with iolock I suspect. Updated various modules
to register the threads' account names, etc.
2003-01-06 00:07:58 +01:00
jgoerzen
c48d8d4fda /offlineimap/head: changeset 307
Starting to work now.
2003-01-05 13:01:17 +01:00
jgoerzen
86df6db630 /offlineimap/head: changeset 306
Removed debug prints
2003-01-05 12:55:37 +01:00
jgoerzen
0b7d75de60 /offlineimap/head: changeset 305
Believed to be somewhat working now
2003-01-05 12:50:01 +01:00
jgoerzen
8301e3015f /offlineimap/head: changeset 304
Clarified copyright statement
2003-01-05 09:11:46 +01:00
jgoerzen
6b7c0801b0 /offlineimap/head: changeset 303
Removed password echo for debugging
2003-01-05 09:07:40 +01:00
jgoerzen
9df89638f5 /offlineimap/head: changeset 302
Now capable of actually reading passwords.
2003-01-05 09:07:00 +01:00
jgoerzen
ba0c95f6bc /offlineimap/head: changeset 301
Nominally-working Blinkenlights interface for Curses!
2003-01-05 08:51:35 +01:00
jgoerzen
380f654df5 /offlineimap/head: changeset 300
Beginnings of support for a curses-based Blinkenlights.
2003-01-05 05:51:17 +01:00
jgoerzen
96e20c91c3 /offlineimap/head: changeset 299
Started breaking Blinkenlights out into a base class.
2003-01-05 04:35:36 +01:00
jgoerzen
b51f302be7 /offlineimap/head: changeset 298
Removed this (not a real part of the program)
2003-01-04 05:58:04 +01:00
jgoerzen
854eaf3055 /offlineimap/head: changeset 297
Changed to a more account-centric behavior. The refresh time is now a
per-account variable. Implemented new account classes. User interfaces
must now be updated to take advantage of this.
2003-01-04 05:57:46 +01:00
jgoerzen
1691cdbf0f /offlineimap/head: changeset 296
Fixing error
2003-01-04 05:57:20 +01:00
jgoerzen
d59f7abdaa /offlineimap/head: changeset 295
Got Tk working again. Woohoo.
2003-01-03 08:08:10 +01:00
jgoerzen
8e3b18f375 /offlineimap/head: changeset 294
Updated with various fixes
2003-01-03 08:01:41 +01:00