AssuanClient.make_request() now raises an error on 'ERR'.
authorW. Trevor King <wking@drexel.edu>
Thu, 22 Mar 2012 20:54:15 +0000 (16:54 -0400)
committerW. Trevor King <wking@drexel.edu>
Thu, 22 Mar 2012 20:54:15 +0000 (16:54 -0400)
That way you don't have to check yourself.

bin/get-info.py
pyassuan/client.py

index 9244e40869c6f68a3e00fd0b07b1fdb7cfcde753..95c3209c186bdcd297f454b85cf412f73fcc3820 100755 (executable)
@@ -40,11 +40,12 @@ if __name__ == '__main__':
     try:
         response = client.read_response()
         assert response.type == 'OK', response
-        responses = client.make_request(_common.Request('HELP'))
-        responses = client.make_request(_common.Request('HELP GETINFO'))
+        client.make_request(_common.Request('HELP'))
+        client.make_request(_common.Request('HELP GETINFO'))
         for attribute in ['version', 'pid', 'socket_name', 'ssh_socket_name']:
-            responses = client.make_request(
-                _common.Request('GETINFO', attribute))
+            client.make_request(_common.Request('GETINFO', attribute))
     finally:
-        responses = client.make_request(_common.Request('BYE'))
+        client.make_request(_common.Request('BYE'))
         client.disconnect()
+        socket.shutdown(_socket.SHUT_RDWR)
+        socket.close()
index 4cef08b8cdb7540bb966c03d53602bb538795a92..0be94881aeaef273367bf9599f890e13a4e14d6e 100644 (file)
@@ -70,7 +70,20 @@ class AssuanClient (object):
         except IOError:
             if not self.stop:
                 raise
-        return list(self.responses())
+        responses = list(self.responses())
+        if responses[-1].type == 'ERR':
+            eresponse = responses[-1]
+            fields = eresponse.parameters.split(' ', 1)
+            code = int(fields[0])
+            if len(fields) > 1:
+                message = fields[1].strip()
+            else:
+                message = None
+            error = _error.AssuanError(code=code, message=message)
+            error.request = request
+            error.responses = responses
+            raise error
+        return responses
 
     def responses(self):
         while True: