summaryrefslogtreecommitdiff
path: root/src/socket_transport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/socket_transport.cpp')
-rw-r--r--src/socket_transport.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/socket_transport.cpp b/src/socket_transport.cpp
index 72b712232..26653e55f 100644
--- a/src/socket_transport.cpp
+++ b/src/socket_transport.cpp
@@ -29,8 +29,10 @@ bool BufferedSocket::ProcessRead()
this->recv_len = 0;
int len = this->io->Recv(this, tbuffer, sizeof(tbuffer) - 1);
- if (len <= 0)
+ if (len == 0)
return false;
+ if (len < 0)
+ return SocketEngine::IgnoreErrno();
tbuffer[len] = 0;
this->read_buffer.append(tbuffer);
@@ -42,8 +44,11 @@ bool BufferedSocket::ProcessRead()
bool BufferedSocket::ProcessWrite()
{
int count = this->io->Send(this, this->write_buffer);
- if (count <= -1)
+ if (count == 0)
return false;
+ if (count < 0)
+ return SocketEngine::IgnoreErrno();
+
this->write_buffer = this->write_buffer.substr(count);
if (this->write_buffer.empty())
SocketEngine::Change(this, false, SF_WRITABLE);