THRIFT-1228. php: The php accelerator module calls flush incorrectly
authorBryan Duxbury <bryanduxbury@apache.org>
Thu, 30 Jun 2011 18:59:18 +0000 (18:59 +0000)
committerBryan Duxbury <bryanduxbury@apache.org>
Thu, 30 Jun 2011 18:59:18 +0000 (18:59 +0000)
This patch makes sure that filling the php extension's internal buffer does not cause a premature flush of the whole transport.

Patch: Nathaniel Cook

git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1141668 13f79535-47bb-0310-9956-ffa450edef68

lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp

index 253026d..3e32cb9 100644 (file)
@@ -177,7 +177,7 @@ public:
 
   void write(const char* data, size_t len) {
     if ((len + buffer_used) > buffer_size) {
-      flush();
+      internalFlush();
     }
     if (len > buffer_size) {
       directWrite(data, len);
@@ -218,15 +218,18 @@ public:
   }
 
   void flush() {
-    if (buffer_used) {
+    internalFlush();
+    directFlush();
+  }
+
+protected:
+  void internalFlush() {
+     if (buffer_used) {
       directWrite(buffer, buffer_used);
       buffer_ptr = buffer;
       buffer_used = 0;
     }
-    directFlush();
   }
-
-protected:
   void directFlush() {
     zval ret;
     ZVAL_NULL(&ret);