diff options
author | Benoit Foucher <benoit@zeroc.com> | 2013-07-12 14:07:08 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2013-07-12 14:07:08 +0200 |
commit | e0064a1ce41067e40eb1495745e3499e836f1a61 (patch) | |
tree | ca41e7d77ff2da9d02775a4209c2e0009868053d /cpp/src/Ice/ConnectionI.cpp | |
parent | ICE-5377 - clang optimized build failure (diff) | |
download | ice-e0064a1ce41067e40eb1495745e3499e836f1a61.tar.bz2 ice-e0064a1ce41067e40eb1495745e3499e836f1a61.tar.xz ice-e0064a1ce41067e40eb1495745e3499e836f1a61.zip |
Fix to allow transceivers to read more data than requested.
Diffstat (limited to 'cpp/src/Ice/ConnectionI.cpp')
-rw-r--r-- | cpp/src/Ice/ConnectionI.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
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); |