From 2323aa9c1cd7926d68b487013f847b4b2bf85bb0 Mon Sep 17 00:00:00 2001 From: Bryan Duxbury Date: Thu, 30 Jun 2011 18:59:18 +0000 Subject: [PATCH] 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 --- .../src/ext/thrift_protocol/php_thrift_protocol.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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); -- 2.17.1