summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ConnectionI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ConnectionI.cpp')
-rw-r--r--cpp/src/Ice/ConnectionI.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
index b823e77de2f..afc70dcf85f 100644
--- a/cpp/src/Ice/ConnectionI.cpp
+++ b/cpp/src/Ice/ConnectionI.cpp
@@ -1335,21 +1335,24 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
unscheduleTimeout(current.operation);
if(current.operation & SocketOperationWrite && !_writeStream.b.empty())
{
- if(_observer.get() && _writeStream.i != _writeStream.b.end())
+ if(_writeStream.i != _writeStream.b.end())
{
- _observer->startWrite();
- }
-
- if(_writeStream.i != _writeStream.b.end() && !_transceiver->write(_writeStream))
- {
- assert(!_writeStream.b.empty());
- scheduleTimeout(SocketOperationWrite, _endpoint->timeout());
- return;
- }
-
- if(_observer.get())
- {
- _observer->finishWrite();
+ if(_observer.get())
+ {
+ _observer->startWrite();
+ }
+
+ if(!_transceiver->write(_writeStream))
+ {
+ assert(!_writeStream.b.empty());
+ scheduleTimeout(SocketOperationWrite, _endpoint->timeout());
+ return;
+ }
+
+ if(_observer.get())
+ {
+ _observer->finishWrite();
+ }
}
assert(_writeStream.i == _writeStream.b.end());
}