Сервер выдает ошибку переполнения стэка после первого запроса
void ServerClass::startListening(shared_ptr<tcp::socket> socketPtr) { // Обработка одного сокета
auto bufferPtr = make_shared<beast::flat_buffer>();
auto reqPtr = make_shared<http::request<http::dynamic_body>>();
async_read(*socketPtr, *bufferPtr, *reqPtr, [this, socketPtr, bufferPtr, reqPtr](const boost::system::error_code& err, size_t bytes) {
if (!err) {
http::response<http::dynamic_body> res{ http::status::ok, reqPtr->version() };
res.set(http::field::server, BOOST_BEAST_VERSION_STRING);
res.set(http::field::content_type, "application/json");
boost::beast::ostream(res.body()) << checkRequestType(reqPtr->target());
res.prepare_payload();
async_write(*socketPtr, res, [this, socketPtr](const boost::system::error_code& err, size_t bytes) {
socketPtr->shutdown(tcp::socket::shutdown_send);
});
}
});
}
void ServerClass::initServer() { // Точка начала
try {
io_service service;
auto const address = boost::asio::ip::make_address(getLocalIpAddress());
const unsigned port = 80;
tcp::acceptor acceptor{ service, {address, port} };
while (true) {
auto socketPtr = make_shared<tcp::socket>(service);
acceptor.async_accept(*socketPtr, [this, socketPtr](const boost::system::error_code& err) {
if (!err) {
startListening(socketPtr);
}
});
service.run_one();
if (service.stopped()) {
break;
}
}
}
catch (exception const& e) {
cerr << "Error: " << e.what() << endl;
}
}
Вот мой код, пытаюсь сделать апишку свою, которая будет принимать и обрабатывать запросы, в моем классе функций больше, но я вставил те, которые важны. В общем, проблема заключается в том, что после первого запроса мне выдает следующую ошибку в терминале: REST_API.exe (процесс 12160) завершил работу с кодом -1073741819. По идеи это связанно с тем, что стэк переполняется, но я не уверен. Все отлично компилируется, и до того как я начал делать асинхронное чтение и запись все работало четко. Можете подсказать что не так?