From: Bryan Duxbury Date: Thu, 30 Jun 2011 18:59:18 +0000 (+0000) Subject: THRIFT-1228. php: The php accelerator module calls flush incorrectly X-Git-Tag: 0.7.0~44 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=2323aa9c1cd7926d68b487013f847b4b2bf85bb0;p=common%2Fthrift.git THRIFT-1228. php: The php accelerator module calls flush incorrectly 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 --- diff --git a/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp index 253026d5..3e32cb92 100644 --- a/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp +++ b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp @@ -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);