- Moved every locking statements in a try..finally block

git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/trunk@553 a942ae1a-1317-0410-a47c-b1dcaea8d605
0.x
Cyril Jaquier 2007-02-25 23:53:22 +00:00
parent f02a915de1
commit 6426cf75aa
4 changed files with 123 additions and 100 deletions

View File

@ -13,6 +13,7 @@ ver. 0.?.? (2007/??/??) - ???
- Added new filters/actions. Thanks to Yaroslav Halchenko
- Added Suse init script and modified gentoo-initd. Thanks to
Christian Rauch
- Moved every locking statements in a try..finally block
ver. 0.7.7 (2007/02/08) - release candidate
----------

View File

@ -62,8 +62,10 @@ class BanManager:
# @param value the time
def setBanTime(self, value):
try:
self.__lock.acquire()
self.__banTime = int(value)
finally:
self.__lock.release()
##
@ -85,8 +87,10 @@ class BanManager:
# @param value total number
def setBanTotal(self, value):
try:
self.__lock.acquire()
self.__banTotal = value
finally:
self.__lock.release()
##

View File

@ -42,6 +42,8 @@ class DateDetector:
self.__defTemplate = DateStrptime()
def addDefaultTemplate(self):
try:
self.__lock.acquire()
# standard
template = DateStrptime()
template.setName("Month Day Hour:Minute:Second")
@ -80,6 +82,8 @@ class DateDetector:
template = DateEpoch()
template.setName("Epoch")
self.__templates.append(template)
finally:
self.__lock.release()
def getTemplates(self):
return self.__templates
@ -100,14 +104,15 @@ class DateDetector:
if self.__defTemplate.isValid():
return self.__defTemplate.matchDate(line)
else:
try:
self.__lock.acquire()
for template in self.__templates:
match = template.matchDate(line)
if not match == None:
self.__lock.release()
return match
self.__lock.release()
return None
finally:
self.__lock.release()
def getTime(self, line):
if self.__defTemplate.isValid():
@ -117,6 +122,7 @@ class DateDetector:
except ValueError:
return None
else:
try:
self.__lock.acquire()
for template in self.__templates:
try:
@ -124,12 +130,12 @@ class DateDetector:
if date == None:
continue
template.incHits()
self.__lock.release()
return date
except ValueError:
pass
self.__lock.release()
return None
finally:
self.__lock.release()
def getUnixTime(self, line):
date = self.getTime(line)
@ -143,8 +149,11 @@ class DateDetector:
# in this object and thus should be called from time to time.
def sortTemplate(self):
try:
self.__lock.acquire()
logSys.debug("Sorting the template list")
self.__templates.sort(cmp = lambda x, y: cmp(x.getHits(), y.getHits()),
self.__templates.sort(cmp = lambda x, y:
cmp(x.getHits(), y.getHits()),
reverse = True)
finally:
self.__lock.release()

View File

@ -42,8 +42,10 @@ class FailManager:
self.__failTotal = 0
def setFailTotal(self, value):
try:
self.__lock.acquire()
self.__failTotal = value
finally:
self.__lock.release()
def getFailTotal(self):
@ -54,8 +56,10 @@ class FailManager:
self.__lock.release()
def setMaxRetry(self, value):
try:
self.__lock.acquire()
self.__maxRetry = value
finally:
self.__lock.release()
def getMaxRetry(self):
@ -66,8 +70,10 @@ class FailManager:
self.__lock.release()
def setMaxTime(self, value):
try:
self.__lock.acquire()
self.__maxTime = value
finally:
self.__lock.release()
def getMaxTime(self):
@ -78,6 +84,7 @@ class FailManager:
self.__lock.release()
def addFailure(self, ticket):
try:
self.__lock.acquire()
ip = ticket.getIP()
unixTime = ticket.getTime()
@ -91,6 +98,7 @@ class FailManager:
fData.setLastTime(unixTime)
self.__failList[ip] = fData
self.__failTotal += 1
finally:
self.__lock.release()
def size(self):
@ -101,11 +109,13 @@ class FailManager:
self.__lock.release()
def cleanup(self, time):
try:
self.__lock.acquire()
tmp = self.__failList.copy()
for item in tmp:
if tmp[item].getLastTime() < time - self.__maxTime:
self.__delFailure(item)
finally:
self.__lock.release()
def __delFailure(self, ip):
@ -129,4 +139,3 @@ class FailManager:
class FailManagerEmpty(Exception):
pass