]> code.delx.au - offlineimap/commitdiff
Patch to make exit on Ctrl-C cleaner
authorJohn Goerzen <jgoerzen@complete.org>
Mon, 1 Dec 2008 22:10:49 +0000 (16:10 -0600)
committerJohn Goerzen <jgoerzen@complete.org>
Mon, 1 Dec 2008 22:10:49 +0000 (16:10 -0600)
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.

offlineimap/accounts.py
offlineimap/threadutil.py

index 36a7665bcfdadb3cfa6dca7d0f7f70ac039804ca..1e7e6f8d50e5e67791b711aab8083367356d7232 100644 (file)
@@ -229,11 +229,11 @@ def syncfolder(accountname, remoterepos, remotefolder, localrepos,
     if len(localfolder.getmessagelist()) or len(statusfolder.getmessagelist()):
         if not localfolder.isuidvalidityok():
             ui.validityproblem(localfolder)
-           localrepos.restore_atime()
+            localrepos.restore_atime()
             return
         if not remotefolder.isuidvalidityok():
             ui.validityproblem(remotefolder)
-           localrepos.restore_atime()
+            localrepos.restore_atime()
             return
     else:
         localfolder.saveuidvalidity()
index afcad252d6fb5c660cbd23b6460378e8087148bb..b516f68671b95be9e850794e2207a00822c686a9 100644 (file)
@@ -159,16 +159,18 @@ class ExitNotifyThread(Thread):
                             self.getName() + ".prof")
         except:
             self.setExitCause('EXCEPTION')
-            self.setExitException(sys.exc_info()[1])
-            sbuf = StringIO()
-            traceback.print_exc(file = sbuf)
-            self.setExitStackTrace(sbuf.getvalue())
+            if sys:
+                self.setExitException(sys.exc_info()[1])
+                sbuf = StringIO()
+                traceback.print_exc(file = sbuf)
+                self.setExitStackTrace(sbuf.getvalue())
         else:
             self.setExitCause('NORMAL')
         if not hasattr(self, 'exitmessage'):
             self.setExitMessage(None)
 
-        exitthreads.put(self, True)
+        if exitthreads:
+            exitthreads.put(self, True)
 
     def setExitCause(self, cause):
         self.exitcause = cause
@@ -230,7 +232,8 @@ class InstanceLimitedThread(ExitNotifyThread):
         try:
             ExitNotifyThread.run(self)
         finally:
-            instancelimitedsems[self.instancename].release()
+            if instancelimitedsems and instancelimitedsems[self.instancename]:
+                instancelimitedsems[self.instancename].release()
         
     
 ######################################################################