diff options
author | Damien Stuart <dstuart@dstuart.org> | 2017-12-31 16:00:57 -0500 |
---|---|---|
committer | Damien Stuart <dstuart@dstuart.org> | 2017-12-31 16:00:57 -0500 |
commit | cc559a7e50d7010417214772b58803f9b2aba7bf (patch) | |
tree | 8c36228670ae3ae7ca2ba04f68766e70d2bc13ea | |
parent | 8996b7eaca8092a62fb9f2e659afa4533821900a (diff) |
Ensure the lock is released if there is an exception on socket I/O.
-rw-r--r-- | pigpio.py | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -980,8 +980,12 @@ def _pigpio_command(sl, cmd, p1, p2, rl=True): p2:= command parameter 2 (if applicable). """ sl.l.acquire() - sl.s.send(struct.pack('IIII', cmd, p1, p2, 0)) - dummy, res = struct.unpack('12sI', sl.s.recv(_SOCK_CMD_LEN)) + try: + sl.s.send(struct.pack('IIII', cmd, p1, p2, 0)) + dummy, res = struct.unpack('12sI', sl.s.recv(_SOCK_CMD_LEN)) + except Exception, e: + sl.l.release() + raise(e) if rl: sl.l.release() return res @@ -1003,8 +1007,12 @@ def _pigpio_command_ext(sl, cmd, p1, p2, p3, extents, rl=True): else: ext.extend(x) sl.l.acquire() - sl.s.sendall(ext) - dummy, res = struct.unpack('12sI', sl.s.recv(_SOCK_CMD_LEN)) + try: + sl.s.sendall(ext) + dummy, res = struct.unpack('12sI', sl.s.recv(_SOCK_CMD_LEN)) + except Exception, e: + sl.l.release() + raise(e) if rl: sl.l.release() return res |