diff --git a/IPython/kernel/zmq/session.py b/IPython/kernel/zmq/session.py index b71d043..ae46275 100644 --- a/IPython/kernel/zmq/session.py +++ b/IPython/kernel/zmq/session.py @@ -659,7 +659,7 @@ class Session(Configurable): to_send.append(DELIM) to_send.append(self.sign(msg_list)) to_send.extend(msg_list) - stream.send_multipart(msg_list, flags, copy=copy) + stream.send_multipart(to_send, flags, copy=copy) def recv(self, socket, mode=zmq.NOBLOCK, content=True, copy=True): """Receive and unpack a message. diff --git a/IPython/kernel/zmq/tests/test_session.py b/IPython/kernel/zmq/tests/test_session.py index df7b77b..3d50ea1 100644 --- a/IPython/kernel/zmq/tests/test_session.py +++ b/IPython/kernel/zmq/tests/test_session.py @@ -223,3 +223,27 @@ class TestSession(SessionTestCase): session._add_digest(uuid.uuid4().bytes) self.assertTrue(len(session.digest_history) == 91) + def test_send_raw(self): + ctx = zmq.Context.instance() + A = ctx.socket(zmq.PAIR) + B = ctx.socket(zmq.PAIR) + A.bind("inproc://test") + B.connect("inproc://test") + + msg = self.session.msg('execute', content=dict(a=10)) + msg_list = [self.session.pack(msg[part]) for part in + ['header', 'parent_header', 'metadata', 'content']] + self.session.send_raw(A, msg_list, ident=b'foo') + + ident, new_msg_list = self.session.feed_identities(B.recv_multipart()) + new_msg = self.session.unserialize(new_msg_list) + self.assertEqual(ident[0], b'foo') + self.assertEqual(new_msg['msg_type'],msg['msg_type']) + self.assertEqual(new_msg['header'],msg['header']) + self.assertEqual(new_msg['parent_header'],msg['parent_header']) + self.assertEqual(new_msg['content'],msg['content']) + self.assertEqual(new_msg['metadata'],msg['metadata']) + + A.close() + B.close() + ctx.term()