From 0cafcaf643b00eacda4602d30b94828910ec430a Mon Sep 17 00:00:00 2001 From: taynpg Date: Wed, 18 Dec 2024 12:55:00 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E6=AD=A3Server=E7=AB=AF?= =?UTF-8?q?=EF=BC=8C=E6=BC=8F=E8=A7=A3=E6=9E=90=E5=8C=85bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- net/net_base.cpp | 8 +++----- server/server.cpp | 14 +++++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/net/net_base.cpp b/net/net_base.cpp index 0764ace..ec6bd13 100644 --- a/net/net_base.cpp +++ b/net/net_base.cpp @@ -63,18 +63,16 @@ void CTcpClient::async_recv() } } else { buffer_.push(tmp_buf_.data(), length); - - bool done = true; - while (done) { + while (true) { auto* frame = CTransProtocal::parse(buffer_); if (frame) { if (fun_) { fun_(frame); } delete frame; - } else { - done = false; + continue; } + break; } async_recv(); } diff --git a/server/server.cpp b/server/server.cpp index c4a887b..a0e73a7 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -238,11 +238,15 @@ void CTcpServer::th_client(std::shared_ptr socket, const } cache->buffer_.push(cache->tmp_buf_.data(), length); - auto* frame = CTransProtocal::parse(cache->buffer_); - if (frame) { - frame->fid_ = client_key; - std::lock_guard lock(buf_mut_); - cache_.push_back(frame); + while (true) { + auto* frame = CTransProtocal::parse(cache->buffer_); + if (frame) { + frame->fid_ = client_key; + std::lock_guard lock(buf_mut_); + cache_.push_back(frame); + continue; + } + break; } } } catch (std::exception& e) {