From: Todd Lipcon Date: Thu, 3 Dec 2009 01:18:44 +0000 (+0000) Subject: THRIFT-637. python: Fix mixing of oneway and regular requests in TNonblockingServer X-Git-Tag: 0.2.0~4 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=f5dea4c7f31703cdc0c347eb7ec429fc5864afb4;p=common%2Fthrift.git THRIFT-637. python: Fix mixing of oneway and regular requests in TNonblockingServer git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@886646 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/py/src/server/TNonblockingServer.py b/lib/py/src/server/TNonblockingServer.py index deec708a..ea348a0b 100644 --- a/lib/py/src/server/TNonblockingServer.py +++ b/lib/py/src/server/TNonblockingServer.py @@ -178,11 +178,12 @@ class Connection: self.wake_up() return self.len = '' - self.message = struct.pack('!i', len(message)) + message if len(message) == 0: # it was a oneway request, do not write answer + self.message = '' self.status = WAIT_LEN else: + self.message = struct.pack('!i', len(message)) + message self.status = SEND_ANSWER self.wake_up() diff --git a/test/py/TestClient.py b/test/py/TestClient.py index 64e5e872..0a38b03b 100755 --- a/test/py/TestClient.py +++ b/test/py/TestClient.py @@ -129,6 +129,10 @@ class AbstractTest(unittest.TestCase): end = time.time() self.assertTrue(end - start < 0.2, "oneway sleep took %f sec" % (end - start)) + + def testOnewayThenNormal(self): + self.client.testOneway(0.5) + self.assertEqual(self.client.testString('Python'), 'Python') class NormalBinaryTest(AbstractTest): protocol_factory = TBinaryProtocol.TBinaryProtocolFactory()