/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.
This commit is contained in:
parent
30d18b0e3f
commit
45e8543541
@ -1,3 +1,11 @@
|
|||||||
|
offlineimap (3.99.15) unstable; urgency=low
|
||||||
|
|
||||||
|
* 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. Closes: #FIXME.
|
||||||
|
|
||||||
|
-- John Goerzen <jgoerzen@complete.org> Mon, 28 Apr 2003 14:00:32 -0500
|
||||||
|
|
||||||
offlineimap (3.99.14) unstable; urgency=low
|
offlineimap (3.99.14) unstable; urgency=low
|
||||||
|
|
||||||
* Added the ability to use the top level of a Maildir as folder named
|
* Added the ability to use the top level of a Maildir as folder named
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# OfflineIMAP synchronization master code
|
# OfflineIMAP synchronization master code
|
||||||
# Copyright (C) 2002, 2003 John Goerzen
|
# Copyright (C) 2002 John Goerzen
|
||||||
# <jgoerzen@complete.org>
|
# <jgoerzen@complete.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
@ -25,16 +25,21 @@ import re, os, os.path, offlineimap, sys
|
|||||||
from ConfigParser import ConfigParser
|
from ConfigParser import ConfigParser
|
||||||
from threading import *
|
from threading import *
|
||||||
|
|
||||||
def syncaccount(config, accountname):
|
def syncaccount(threads, config, accountname):
|
||||||
account = SyncableAccount(config, accountname)
|
account = SyncableAccount(config, accountname)
|
||||||
thread = InstanceLimitedThread(instancename = 'ACCOUNTLIMIT',
|
thread = InstanceLimitedThread(instancename = 'ACCOUNTLIMIT',
|
||||||
target = account.syncrunner,
|
target = account.syncrunner,
|
||||||
name = "Account sync %s" % accountname)
|
name = "Account sync %s" % accountname)
|
||||||
thread.setDaemon(1)
|
thread.setDaemon(1)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
threads.add(thread)
|
||||||
|
|
||||||
def syncitall(accounts, config):
|
def syncitall(accounts, config):
|
||||||
|
currentThread().setExitMessage('SYNC_WITH_TIMER_TERMINATE')
|
||||||
ui = UIBase.getglobalui()
|
ui = UIBase.getglobalui()
|
||||||
|
threads = threadutil.threadlist()
|
||||||
mbnames.init(config, accounts)
|
mbnames.init(config, accounts)
|
||||||
for accountname in accounts:
|
for accountname in accounts:
|
||||||
syncaccount(config, accountname)
|
syncaccount(threads, config, accountname)
|
||||||
|
# Wait for the threads to finish.
|
||||||
|
threads.reset()
|
||||||
|
@ -134,6 +134,11 @@ def threadexited(thread):
|
|||||||
ui.threadException(thread) # Expected to terminate
|
ui.threadException(thread) # Expected to terminate
|
||||||
sys.exit(100) # Just in case...
|
sys.exit(100) # Just in case...
|
||||||
os._exit(100)
|
os._exit(100)
|
||||||
|
elif thread.getExitMessage() == 'SYNC_WITH_TIMER_TERMINATE':
|
||||||
|
ui.terminate()
|
||||||
|
# Just in case...
|
||||||
|
sys.exit(100)
|
||||||
|
os._exit(100)
|
||||||
else:
|
else:
|
||||||
ui.threadExited(thread)
|
ui.threadExited(thread)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user