/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:
jgoerzen 2003-04-29 01:04:22 +01:00
parent 30d18b0e3f
commit 45e8543541
3 changed files with 21 additions and 3 deletions

View File

@ -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

View File

@ -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()

View File

@ -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)