diff --git a/src/protocol/Connection.cpp b/src/protocol/Connection.cpp index f43ce5f..98ead0f 100644 --- a/src/protocol/Connection.cpp +++ b/src/protocol/Connection.cpp @@ -223,31 +223,34 @@ namespace STIP { sessionManager->addSession(tempMsgSession); tempMsgSession->processIncomingPacket(packet); session_id = packet.header.session_id; - sessionKiller.registerSessionTimeout( - packet.header.session_id, - 20000, - [this, session_id] { - auto *temp = dynamic_cast(sessionManager->getSession( - session_id)); - sessionManager->deleteSessionById(session_id); - delete temp; - } - ); +// sessionKiller.registerSessionTimeout( +// packet.header.session_id, +// 20000, +// [this, session_id] { +// auto *temp = dynamic_cast(sessionManager->getSession( +// session_id)); +// std::cout << "Deleting session " << session_id << std::endl; +// // sleep 5 seconds +// std::this_thread::sleep_for(std::chrono::seconds(5)); +// sessionManager->deleteSessionById(session_id); +// delete temp; +// } +// ); TODO: BUG Это вызывает странные ошибки во время работы. Временно без клинера CRITICAL break; case Command::MSG_SEND_DATA_PART: tempReceiveSession = dynamic_cast(sessionManager->getSession( packet.header.session_id)); - if (tempReceiveSession != nullptr) { - tempReceiveSession->processIncomingPacket(packet); - sessionKiller.resetSessionTimeout(packet.header.session_id); + if (tempReceiveSession == nullptr) break; - } + tempReceiveSession->processIncomingPacket(packet); + sessionKiller.resetSessionTimeout(packet.header.session_id); if (tempReceiveSession->getStatus() == 5) { if (tempReceiveSession->dispatched) break; tempReceiveSession->dispatched = true; std::lock_guard lock(messageMtx); + messageQueue.push(tempReceiveSession); #ifdef STIP_PROTOCOL_DEBUG std::cout << "Message received, should be notified" << std::endl; diff --git a/src/rabbitCore/server/RabbitServer.cpp b/src/rabbitCore/server/RabbitServer.cpp index 54579cd..8435eb1 100644 --- a/src/rabbitCore/server/RabbitServer.cpp +++ b/src/rabbitCore/server/RabbitServer.cpp @@ -22,6 +22,8 @@ RabbitServer::RabbitServer(int port) { void RabbitServer::init() { server_socket = new udp::socket(io_context, udp::endpoint(udp::v4(), port)); + udp::socket::receive_buffer_size bigbufsize(INT_MAX); + server_socket->set_option(bigbufsize); } void RabbitServer::startPolling() { diff --git a/src/rabbitCore/worker/RabbitWorker.cpp b/src/rabbitCore/worker/RabbitWorker.cpp index f835143..d77ce43 100644 --- a/src/rabbitCore/worker/RabbitWorker.cpp +++ b/src/rabbitCore/worker/RabbitWorker.cpp @@ -36,6 +36,8 @@ void RabbitWorker::init() { server_socket = new udp::socket(io_context); server_socket->open(udp::v4()); + udp::socket::receive_buffer_size bigbufsize(INT_MAX); + server_socket->set_option(bigbufsize); client = new STIP::STIPClient(*server_socket); client->startListen(); diff --git a/src/server/STIPServer.cpp b/src/server/STIPServer.cpp index f0acd0c..d4a4372 100644 --- a/src/server/STIPServer.cpp +++ b/src/server/STIPServer.cpp @@ -17,7 +17,7 @@ namespace STIP { udp::endpoint remote_endpoint; size_t length = this->socket->receive_from(boost::asio::buffer(packet), remote_endpoint, 0, error); if (error && error != boost::asio::error::message_size || length == 0) { - std::cerr << "Receive failed in acceptConnection: " << error.message() << std::endl; +// std::cerr << "Receive failed in acceptConnection: " << error.message() << std::endl; return nullptr; // throw boost::system::system_error(error); }