summaryrefslogtreecommitdiff
path: root/src/socketengine.cpp
diff options
context:
space:
mode:
authorGravatar attilamolnar2012-05-19 14:56:02 +0200
committerGravatar attilamolnar2012-05-19 14:56:02 +0200
commitd10a0ccfa9711b5985e43d41d7aae2991d47faa5 (patch)
tree1e8dfb19cc3b9f2b63a14b79cfdf527610cbdc04 /src/socketengine.cpp
parentMerge pull request #121 from kwangchin/insp12-issue-120 (diff)
Count the actual number of sent/received bytes in SocketEngine instead of the buffer size passed to the send/receive functions
Diffstat (limited to 'src/socketengine.cpp')
-rw-r--r--src/socketengine.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/socketengine.cpp b/src/socketengine.cpp
index ad05a2916..94500e984 100644
--- a/src/socketengine.cpp
+++ b/src/socketengine.cpp
@@ -219,26 +219,34 @@ int SocketEngine::GetSockName(EventHandler* fd, sockaddr *name, socklen_t* namel
int SocketEngine::RecvFrom(EventHandler* fd, void *buf, size_t len, int flags, sockaddr *from, socklen_t *fromlen)
{
- this->UpdateStats(len, 0);
- return recvfrom(fd->GetFd(), (char*)buf, len, flags, from, fromlen);
+ int nbRecvd = recvfrom(fd->GetFd(), (char*)buf, len, flags, from, fromlen);
+ if (nbRecvd > 0)
+ this->UpdateStats(nbRecvd, 0);
+ return nbRecvd;
}
int SocketEngine::Send(EventHandler* fd, const void *buf, size_t len, int flags)
{
- this->UpdateStats(0, len);
- return send(fd->GetFd(), (const char*)buf, len, flags);
+ int nbSent = send(fd->GetFd(), (const char*)buf, len, flags);
+ if (nbSent > 0)
+ this->UpdateStats(0, nbSent);
+ return nbSent;
}
int SocketEngine::Recv(EventHandler* fd, void *buf, size_t len, int flags)
{
- this->UpdateStats(len, 0);
- return recv(fd->GetFd(), (char*)buf, len, flags);
+ int nbRecvd = recv(fd->GetFd(), (char*)buf, len, flags);
+ if (nbRecvd > 0)
+ this->UpdateStats(nbRecvd, 0);
+ return nbRecvd;
}
int SocketEngine::SendTo(EventHandler* fd, const void *buf, size_t len, int flags, const sockaddr *to, socklen_t tolen)
{
- this->UpdateStats(0, len);
- return sendto(fd->GetFd(), (const char*)buf, len, flags, to, tolen);
+ int nbSent = sendto(fd->GetFd(), (const char*)buf, len, flags, to, tolen);
+ if (nbSent > 0)
+ this->UpdateStats(0, nbSent);
+ return nbSent;
}
int SocketEngine::Connect(EventHandler* fd, const sockaddr *serv_addr, socklen_t addrlen)