From ddc0391d0760525f8dacb020f69b1e63a0e2d948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E6=A5=9A?= <771730766@qq.com> Date: Sat, 23 Dec 2023 20:51:45 +0800 Subject: [PATCH] Update HttpSession.cpp --- src/Http/HttpSession.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/Http/HttpSession.cpp b/src/Http/HttpSession.cpp index a0d98b8a..d5c536b0 100644 --- a/src/Http/HttpSession.cpp +++ b/src/Http/HttpSession.cpp @@ -124,28 +124,17 @@ ssize_t HttpSession::onRecvHeader(const char *header, size_t len) { } //// body size明确指定且小于最大值的情况 //// - auto body = std::make_shared(); - // 预留一定的内存buffer,防止频繁的内存拷贝 - body->reserve(content_len); - - _on_recv_body = [this, body, content_len, it](const char *data, size_t len) mutable { - body->append(data, len); - if (body->size() < content_len) { - // 未收满数据 - return true; - } - + _on_recv_body = [this, it](const char *data, size_t len) mutable { // 收集body完毕 - _parser.setContent(std::move(*body)); + _parser.setContent(std::string(data, lem)); (this->*(it->second))(); _parser.clear(); - // 后续是header - //setContentLen(0); + // _on_recv_body置空 return false; }; - // 声明后续都是body;Http body在本对象缓冲,不通过HttpRequestSplitter保存 + // 声明body长度;通过HttpRequestSplitter缓存然后一次性回调到_on_recv_body return content_len; }