Ensure the lock is released if there is an exception on socket I/O.

This commit is contained in:
Damien Stuart 2017-12-31 16:00:57 -05:00
parent 8996b7eaca
commit cc559a7e50
1 changed files with 12 additions and 4 deletions

View File

@ -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