From 31f829732c324faab5d6632ff80edd21c73d01c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Mon, 22 Jul 2013 09:24:02 +0200 Subject: [PATCH] gravelrpc: fd needs to be instanceof FD --- gravelrpc.py | 5 ++++- rpctool.py | 1 + testrpc_client.py | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/gravelrpc.py b/gravelrpc.py index 25e8d13..383e123 100644 --- a/gravelrpc.py +++ b/gravelrpc.py @@ -52,6 +52,7 @@ def _call(self, name, *args, **kwargs): doc = dict(name=name, args=args, kwargs=kwargs) if '_fds' in kwargs: doc['fds'] = kwargs['_fds'] + kwargs['_fds'] = None write_bson(sock, doc) result = read_bson(sock) if 'error' in result: @@ -77,7 +78,9 @@ def write_bson(sock, doc): sock.send(struct.pack('!I', len(fds))) for fd in fds: - passfd.sendfd(sock, fd, 'whatever') + if not isinstance(fd, FD): + raise TypeError('fds need to be instances of FD (not %r)' % fd) + passfd.sendfd(sock, fd.fileno(), 'whatever') sock.sendall(bson.BSON.encode(doc)) sock.shutdown(socket.SHUT_WR) diff --git a/rpctool.py b/rpctool.py index ae24564..7e6cf87 100755 --- a/rpctool.py +++ b/rpctool.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import argparse import gravelrpc +from gravelrpc import FD parser = argparse.ArgumentParser() parser.add_argument('name') diff --git a/testrpc_client.py b/testrpc_client.py index 985edb4..f08d4ef 100644 --- a/testrpc_client.py +++ b/testrpc_client.py @@ -5,4 +5,4 @@ c = gravelrpc.Client('foo') print c.hello(u'MichaƂ!') -c.say_hello(_fds=[sys.stdout.fileno()]) +c.say_hello(_fds=[gravelrpc.FD(1)])