From 483af8ffd2567be751ff2b87865d9aa9e656ee3f Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sat, 22 Aug 2009 17:44:02 +0200 Subject: [PATCH] [entropy.client] check if file descriptor is valid in resources_remove_lock --- libraries/entropy/client/interfaces/methods.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libraries/entropy/client/interfaces/methods.py b/libraries/entropy/client/interfaces/methods.py index c3bede0a6..b323de4f2 100644 --- a/libraries/entropy/client/interfaces/methods.py +++ b/libraries/entropy/client/interfaces/methods.py @@ -965,10 +965,19 @@ class MiscMixin: def resources_remove_lock(self): if hasattr(self, "_resources_lock_fd"): + + if self._resources_lock_fd is not None: + try: + fcntl.flock(self._resources_lock_fd, fcntl.LOCK_UN) + except IOError, err: + if err.errno == errno.EBADF: + self._resources_lock_fd = None + else: + raise if self._resources_lock_fd is not None: - fcntl.flock(self._resources_lock_fd, fcntl.LOCK_UN) os.close(self._resources_lock_fd) self._resources_lock_fd = None + if os.access(etpConst['locks']['using_resources'], os.F_OK | os.W_OK): os.remove(etpConst['locks']['using_resources'])