From e0064a1ce41067e40eb1495745e3499e836f1a61 Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Fri, 12 Jul 2013 14:07:08 +0200 Subject: Fix to allow transceivers to read more data than requested. --- cpp/src/Ice/ConnectionI.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'cpp/src/Ice/ConnectionI.cpp') diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index 8091d2f2233..9abb600eae2 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -1366,7 +1366,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current) { if(_readHeader) // Read header if necessary. { - if(_readStream.i != _readStream.b.end() && !_transceiver->read(_readStream)) + if(_readStream.i != _readStream.b.end() && !_transceiver->read(_readStream, _hasMoreData)) { return; } @@ -1437,7 +1437,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current) _observer.startRead(_readStream.i); } - if(!_transceiver->read(_readStream)) + if(!_transceiver->read(_readStream, _hasMoreData)) { assert(!_readStream.b.empty()); scheduleTimeout(SocketOperationRead, _endpoint->timeout()); @@ -2135,7 +2135,8 @@ Ice::ConnectionI::setState(State state) } if(_state == StateHolding) { - _threadPool->_register(this, SocketOperationRead); // We need to continue to read in closing state. + // We need to continue to read in closing state. + _threadPool->_register(this, SocketOperationRead); } break; } @@ -2280,7 +2281,7 @@ Ice::ConnectionI::initiateShutdown() bool Ice::ConnectionI::initialize(SocketOperation operation) { - SocketOperation s = _transceiver->initialize(_readStream, _writeStream); + SocketOperation s = _transceiver->initialize(_readStream, _writeStream, _hasMoreData); if(s != SocketOperationNone) { scheduleTimeout(s, connectTimeout()); @@ -2349,7 +2350,7 @@ Ice::ConnectionI::validate(SocketOperation operation) _observer.startRead(_readStream.i); } - if(_readStream.i != _readStream.b.end() && !_transceiver->read(_readStream)) + if(_readStream.i != _readStream.b.end() && !_transceiver->read(_readStream, _hasMoreData)) { scheduleTimeout(SocketOperationRead, connectTimeout()); _threadPool->update(this, operation, SocketOperationRead); -- cgit v1.2.3