summaryrefslogtreecommitdiff
path: root/pigpio.py
diff options
context:
space:
mode:
authorDamien Stuart <dstuart@dstuart.org>2017-12-31 16:00:57 -0500
committerDamien Stuart <dstuart@dstuart.org>2017-12-31 16:00:57 -0500
commitcc559a7e50d7010417214772b58803f9b2aba7bf (patch)
tree8c36228670ae3ae7ca2ba04f68766e70d2bc13ea /pigpio.py
parent8996b7eaca8092a62fb9f2e659afa4533821900a (diff)
Ensure the lock is released if there is an exception on socket I/O.
Diffstat (limited to 'pigpio.py')
-rw-r--r--pigpio.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/pigpio.py b/pigpio.py
index df01c0d..5d22c55 100644
--- a/pigpio.py
+++ b/pigpio.py
@@ -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