From 62b8a649fcae500c983215fac2e5202916c0195f Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Wed, 8 Jun 2005 12:38:15 +0000 Subject: merge some code with enigma code --- lib/base/message.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'lib/base/message.cpp') diff --git a/lib/base/message.cpp b/lib/base/message.cpp index dafbf3f8..48fcd210 100644 --- a/lib/base/message.cpp +++ b/lib/base/message.cpp @@ -17,25 +17,19 @@ eMessagePump::~eMessagePump() int eMessagePump::send(const void *data, int len) { - if (ismt) - content.lock(len); - return ::write(fd[1], data, len)<0; + int wr = ::write(fd[1], data, len); + if (ismt && wr > 0) + content.lock(wr); + return wr<0; } int eMessagePump::recv(void *data, int len) { unsigned char*dst=(unsigned char*)data; - while (len) - { - if (ismt) - content.unlock(len); - int r=::read(fd[0], dst, len); - if (r<0) - return r; - dst+=r; - len-=r; - } - return 0; + int recv=::read(fd[0], dst, len); + if (recv > 0 && ismt) + content.unlock(recv); + return recv; } int eMessagePump::getInputFD() const -- cgit v1.2.3