aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/net/TCPSocket.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2019-07-18 01:31:55 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2019-07-18 01:31:55 -0400
commit0f98c212db6e4cfd750dc1a52a31ddf9396a5e07 (patch)
treebd0bd43b383bccc43d1950fd356472d69f9cd0f1 /src/lib/net/TCPSocket.cpp
parentd8c416864c505aea70c70fd0d5f7991aa50d2ff9 (diff)
parenta916009d4b29995ea8ad61ad47a51c2ee1fa80bc (diff)
Update upstream source from tag 'upstream/2.3.0+dfsg'
Update to upstream version '2.3.0+dfsg' with Debian dir f701d582fe3b6bb5189dbf035102670db9c2516b
Diffstat (limited to 'src/lib/net/TCPSocket.cpp')
-rw-r--r--src/lib/net/TCPSocket.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/net/TCPSocket.cpp b/src/lib/net/TCPSocket.cpp
index dce81ee..d454aa1 100644
--- a/src/lib/net/TCPSocket.cpp
+++ b/src/lib/net/TCPSocket.cpp
@@ -544,10 +544,11 @@ TCPSocket::serviceConnected(ISocketMultiplexerJob* job,
return newJob();
}
- EJobResult result = kRetry;
+ EJobResult writeResult = kRetry;
+ EJobResult readResult = kRetry;
if (write) {
try {
- result = doWrite();
+ writeResult = doWrite();
}
catch (XArchNetworkShutdown&) {
// remote read end of stream hungup. our output side
@@ -558,13 +559,13 @@ TCPSocket::serviceConnected(ISocketMultiplexerJob* job,
sendEvent(m_events->forISocket().disconnected());
m_connected = false;
}
- result = kNew;
+ writeResult = kNew;
}
catch (XArchNetworkDisconnected&) {
// stream hungup
onDisconnected();
sendEvent(m_events->forISocket().disconnected());
- result = kNew;
+ writeResult = kNew;
}
catch (XArchNetwork& e) {
// other write error
@@ -572,19 +573,19 @@ TCPSocket::serviceConnected(ISocketMultiplexerJob* job,
onDisconnected();
sendEvent(m_events->forIStream().outputError());
sendEvent(m_events->forISocket().disconnected());
- result = kNew;
+ writeResult = kNew;
}
}
if (read && m_readable) {
try {
- result = doRead();
+ readResult = doRead();
}
catch (XArchNetworkDisconnected&) {
// stream hungup
sendEvent(m_events->forISocket().disconnected());
onDisconnected();
- result = kNew;
+ readResult = kNew;
}
catch (XArchNetwork& e) {
// ignore other read error
@@ -592,5 +593,11 @@ TCPSocket::serviceConnected(ISocketMultiplexerJob* job,
}
}
- return result == kBreak ? NULL : result == kNew ? newJob() : job;
+ if (writeResult == kBreak || readResult == kBreak) {
+ return NULL;
+ } else if (writeResult == kNew || readResult == kNew) {
+ return newJob();
+ } else {
+ return job;
+ }
}