Fix a stack overflow issue when reading large response data.

This commit is contained in:
Chunting Gu
2019-07-25 17:08:50 +08:00
parent 975d73720a
commit 3b77b001e1
3 changed files with 53 additions and 23 deletions
+12
View File
@@ -45,6 +45,12 @@ bool Socket::Write(const Payload& payload, boost::system::error_code* ec) {
return !(*ec);
}
bool Socket::ReadSome(std::vector<char>* buffer, std::size_t* size,
boost::system::error_code* ec) {
*size = socket_.read_some(boost::asio::buffer(*buffer), *ec);
return (*size != 0 && !(*ec));
}
void Socket::AsyncReadSome(ReadHandler&& handler, std::vector<char>* buffer) {
socket_.async_read_some(boost::asio::buffer(*buffer), std::move(handler));
}
@@ -143,6 +149,12 @@ bool SslSocket::Write(const Payload& payload, boost::system::error_code* ec) {
return !(*ec);
}
bool SslSocket::ReadSome(std::vector<char>* buffer, std::size_t* size,
boost::system::error_code* ec) {
*size = ssl_socket_.read_some(boost::asio::buffer(*buffer), *ec);
return (*size != 0 && !(*ec));
}
void SslSocket::AsyncReadSome(ReadHandler&& handler,
std::vector<char>* buffer) {
ssl_socket_.async_read_some(boost::asio::buffer(*buffer), std::move(handler));