Сервер выдает ошибку переполнения стэка после первого запроса

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. По идеи это связанно с тем, что стэк переполняется, но я не уверен. Все отлично компилируется, и до того как я начал делать асинхронное чтение и запись все работало четко. Можете подсказать что не так?


Ответы (0 шт):