From d10a0ccfa9711b5985e43d41d7aae2991d47faa5 Mon Sep 17 00:00:00 2001 From: attilamolnar Date: Sat, 19 May 2012 14:56:02 +0200 Subject: [PATCH 1/2] Count the actual number of sent/received bytes in SocketEngine instead of the buffer size passed to the send/receive functions --- src/socketengine.cpp | 24 ++++++++++++++++-------- 1 file 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) From 1e87392c387e517fbffd282754d887754f66a9b4 Mon Sep 17 00:00:00 2001 From: attilamolnar Date: Sat, 19 May 2012 14:57:06 +0200 Subject: [PATCH 2/2] Output "Commands(HASH_MAP)" in /stats z as it's a hash_map not a vector --- src/commands/cmd_stats.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/cmd_stats.cpp b/src/commands/cmd_stats.cpp index 9817769bb..950e5237d 100644 --- a/src/commands/cmd_stats.cpp +++ b/src/commands/cmd_stats.cpp @@ -202,7 +202,7 @@ DllExport void DoStats(InspIRCd* ServerInstance, char statschar, User* user, str results.push_back(sn+" 240 "+user->nick+" :InspIRCd(CLASS) "+ConvToStr(sizeof(InspIRCd))+" bytes"); results.push_back(sn+" 249 "+user->nick+" :Users(HASH_MAP) "+ConvToStr(ServerInstance->Users->clientlist->size())+" ("+ConvToStr(ServerInstance->Users->clientlist->size()*sizeof(User))+" bytes)"); results.push_back(sn+" 249 "+user->nick+" :Channels(HASH_MAP) "+ConvToStr(ServerInstance->chanlist->size())+" ("+ConvToStr(ServerInstance->chanlist->size()*sizeof(Channel))+" bytes)"); - results.push_back(sn+" 249 "+user->nick+" :Commands(VECTOR) "+ConvToStr(ServerInstance->Parser->cmdlist.size())+" ("+ConvToStr(ServerInstance->Parser->cmdlist.size()*sizeof(Command))+" bytes)"); + results.push_back(sn+" 249 "+user->nick+" :Commands(HASH_MAP) "+ConvToStr(ServerInstance->Parser->cmdlist.size())+" ("+ConvToStr(ServerInstance->Parser->cmdlist.size()*sizeof(Command))+" bytes)"); if (!ServerInstance->Config->WhoWasGroupSize == 0 && !ServerInstance->Config->WhoWasMaxGroups == 0) {