aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/net/TCPSocket.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2020-07-21 06:15:16 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2020-07-21 06:15:16 -0400
commit37a7155ea7c504b308a8afa642c653a12bbe5f84 (patch)
treebd68ea5d2a2400dcd04b1aa85617534e66aba94c /src/lib/net/TCPSocket.cpp
parent1ae09e76cde035d716763fc88b570535884cd50f (diff)
parentfbc30002ab3438356c0476e70c4577a0310d52c0 (diff)
Update upstream source from tag 'upstream/2.3.3+dfsg'
Update to upstream version '2.3.3+dfsg' with Debian dir f7eeed313bc1a4c2bda69f04f0316ee29651397f
Diffstat (limited to 'src/lib/net/TCPSocket.cpp')
-rw-r--r--src/lib/net/TCPSocket.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/lib/net/TCPSocket.cpp b/src/lib/net/TCPSocket.cpp
index 4f4251a..09a8f17 100644
--- a/src/lib/net/TCPSocket.cpp
+++ b/src/lib/net/TCPSocket.cpp
@@ -403,6 +403,15 @@ void TCPSocket::setJob(std::unique_ptr<ISocketMultiplexerJob>&& job)
}
}
+MultiplexerJobStatus TCPSocket::newJobOrStopServicing()
+{
+ auto new_job = newJob();
+ if (new_job)
+ return {true, std::move(new_job)};
+ else
+ return {false, {}};
+}
+
std::unique_ptr<ISocketMultiplexerJob> TCPSocket::newJob()
{
// note -- must have m_mutex locked on entry
@@ -519,22 +528,14 @@ MultiplexerJobStatus TCPSocket::serviceConnecting(ISocketMultiplexerJob* job, bo
catch (XArchNetwork& e) {
sendConnectionFailedEvent(e.what());
onDisconnected();
- auto new_job = newJob();
- if (new_job)
- return {true, std::move(new_job)};
- else
- return {false, {}};
+ return newJobOrStopServicing();
}
}
if (write) {
sendEvent(m_events->forIDataSocket().connected());
onConnected();
- auto new_job = newJob();
- if (new_job)
- return {true, std::move(new_job)};
- else
- return {false, {}};
+ return newJobOrStopServicing();
}
return {true, {}};
@@ -548,7 +549,7 @@ MultiplexerJobStatus TCPSocket::serviceConnected(ISocketMultiplexerJob* job,
if (error) {
sendEvent(m_events->forISocket().disconnected());
onDisconnected();
- return {true, newJob()};
+ return newJobOrStopServicing();
}
EJobResult writeResult = kRetry;
@@ -603,7 +604,7 @@ MultiplexerJobStatus TCPSocket::serviceConnected(ISocketMultiplexerJob* job,
if (writeResult == kBreak || readResult == kBreak) {
return {false, {}};
} else if (writeResult == kNew || readResult == kNew) {
- return {true, newJob()};
+ return newJobOrStopServicing();
} else {
return {true, {}};
}