diff --git a/Server/src/ServerManager/ServerManager.cpp b/Server/src/ServerManager/ServerManager.cpp index ae139cb..f9e5fc4 100644 --- a/Server/src/ServerManager/ServerManager.cpp +++ b/Server/src/ServerManager/ServerManager.cpp @@ -177,22 +177,36 @@ void ServerManager::processLoginRequestPacket(LoginRequestPacket loginRequestPac std::string userName( (char*)loginRequestPacket.__data.data, loginRequestPacket.__data.packetLength); - registerUser(userName, data->socket); + if (registerUser(userName, data->socket)) { + LoginResponsePacket loginResponsePacket; + loginResponsePacket.__data.packetType = Chattr::PacketCategory::PACKET_RESPONSE; + loginResponsePacket.__data.requestType = Chattr::RequestType::LOGIN; + loginResponsePacket.__data.dataType = Chattr::DataType::BINARY; + loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(Snowflake); + loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::RES_OK; + Snowflake yourId = userSocket2UID_[data->socket]; + ::memcpy(loginResponsePacket.__data.yourId, &yourId, sizeof(Snowflake)); - LoginResponsePacket loginResponsePacket; - loginResponsePacket.__data.packetType = Chattr::PacketCategory::PACKET_RESPONSE; - loginResponsePacket.__data.requestType = Chattr::RequestType::LOGIN; - loginResponsePacket.__data.dataType = Chattr::DataType::BINARY; - loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(Snowflake); - loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::RES_OK; - Snowflake yourId = userSocket2UID_[data->socket]; - ::memcpy(loginResponsePacket.__data.yourId, &yourId, sizeof(Snowflake)); + loginResponsePacket.convToN(); + memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 18); + data->sendbytes = 18; + data->wsabuf.len = 18; + data->IOCPInstance->send(data, 1, 0); + } + else { + LoginResponsePacket loginResponsePacket; + loginResponsePacket.__data.packetType = Chattr::PacketCategory::PACKET_RESPONSE; + loginResponsePacket.__data.requestType = Chattr::RequestType::LOGIN; + loginResponsePacket.__data.dataType = Chattr::DataType::BINARY; + loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode); + loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::BAD_REQUEST; - loginResponsePacket.convToN(); - memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 18); - data->sendbytes = 18; - data->wsabuf.len = 18; - data->IOCPInstance->send(data, 1, 0); + loginResponsePacket.convToN(); + memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 10); + data->sendbytes = 10; + data->wsabuf.len = 10; + data->IOCPInstance->send(data, 1, 0); + } } void ServerManager::processRoomCreateRequestPacket(RoomCreateRequestPacket roomCreateRequestPacket, Chattr::IOCPPASSINDATA* data) { @@ -428,6 +442,7 @@ bool ServerManager::registerUser(std::string userName, std::shared_ptr