python: Make TFramedTransport use a cStringIO for reading

Tested by running a client against a framed-transport server.


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@739631 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/py/src/transport/TTransport.py b/lib/py/src/transport/TTransport.py
index db065fb..ddb368f 100644
--- a/lib/py/src/transport/TTransport.py
+++ b/lib/py/src/transport/TTransport.py
@@ -234,7 +234,7 @@
 
   def __init__(self, trans,):
     self.__trans = trans
-    self.__rbuf = ''
+    self.__rbuf = StringIO()
     self.__wbuf = StringIO()
 
   def isOpen(self):
@@ -247,17 +247,17 @@
     return self.__trans.close()
 
   def read(self, sz):
-    if len(self.__rbuf) == 0:
-      self.readFrame()
-    give = min(len(self.__rbuf), sz)
-    buff = self.__rbuf[0:give]
-    self.__rbuf = self.__rbuf[give:]
-    return buff
+    ret = self.__rbuf.read(sz)
+    if len(ret) != 0:
+      return ret
+
+    self.readFrame()
+    return self.__rbuf.read(sz)
 
   def readFrame(self):
     buff = self.__trans.readAll(4)
     sz, = unpack('!i', buff)
-    self.__rbuf = self.__trans.readAll(sz)
+    self.__rbuf = StringIO(self.__trans.readAll(sz))
 
   def write(self, buf):
     self.__wbuf.write(buf)