Example #1
0
 def close(self):
     # Make sure I own all the semaphores.  Let the threads finish
     # their stuff.  This is a blocking method.
     self.connectionlock.acquire()
     threadutil.semaphorereset(self.semaphore, self.maxconnections)
     for imapobj in self.assignedconnections + self.availableconnections:
         imapobj.logout()
     self.assignedconnections = []
     self.availableconnections = []
     self.lastowner = {}
     self.connectionlock.release()
Example #2
0
 def close(self):
     # Make sure I own all the semaphores.  Let the threads finish
     # their stuff.  This is a blocking method.
     self.connectionlock.acquire()
     threadutil.semaphorereset(self.semaphore, self.maxconnections)
     for imapobj in self.assignedconnections + self.availableconnections:
         imapobj.logout()
     self.assignedconnections = []
     self.availableconnections = []
     self.lastowner = {}
     # reset kerberos state
     self.gss_step = self.GSS_STATE_STEP
     self.gss_vc = None
     self.gssapi = False
     self.connectionlock.release()
Example #3
0
 def close(self):
     # Make sure I own all the semaphores.  Let the threads finish
     # their stuff.  This is a blocking method.
     self.connectionlock.acquire()
     threadutil.semaphorereset(self.semaphore, self.maxconnections)
     for imapobj in self.assignedconnections + self.availableconnections:
         imapobj.logout()
     self.assignedconnections = []
     self.availableconnections = []
     self.lastowner = {}
     # reset kerberos state
     self.gss_step = self.GSS_STATE_STEP
     self.gss_vc = None
     self.gssapi = False
     self.connectionlock.release()
Example #4
0
 def close(self):
     # Make sure I own all the semaphores.  Let the threads finish
     # their stuff.  This is a blocking method.
     with self.connectionlock:
         # first, wait till all connections had been released.
         # TODO: won't work IMHO, as releaseconnection() also
         # requires the connectionlock, leading to a potential
         # deadlock! Audit & check!
         threadutil.semaphorereset(self.semaphore, self.maxconnections)
         for imapobj in self.assignedconnections + self.availableconnections:
             imapobj.logout()
         self.assignedconnections = []
         self.availableconnections = []
         self.lastowner = {}
         # reset GSSAPI state
         self.gss_vc = None
         self.gssapi = False
Example #5
0
 def close(self):
     # Make sure I own all the semaphores.  Let the threads finish
     # their stuff.  This is a blocking method.
     with self.connectionlock:
         # first, wait till all connections had been released.
         # TODO: won't work IMHO, as releaseconnection() also
         # requires the connectionlock, leading to a potential
         # deadlock! Audit & check!
         threadutil.semaphorereset(self.semaphore, self.maxconnections)
         for imapobj in self.assignedconnections + self.availableconnections:
             imapobj.logout()
         self.assignedconnections = []
         self.availableconnections = []
         self.lastowner = {}
         # reset GSSAPI state
         self.gss_vc = None
         self.gssapi = False