diff --git a/repertory/librepertory/src/comm/packet/packet_server.cpp b/repertory/librepertory/src/comm/packet/packet_server.cpp index fa7018ea..5157c18e 100644 --- a/repertory/librepertory/src/comm/packet/packet_server.cpp +++ b/repertory/librepertory/src/comm/packet/packet_server.cpp @@ -143,17 +143,22 @@ auto packet_server::handshake(std::shared_ptr conn) const -> bool { if (total_read == to_read) { packet response(conn->buffer); if (response.decrypt(encryption_token_) == 0) { - std::string nonce; - if (response.decode(nonce) == 0) { - if (nonce == conn->nonce) { - conn->generate_nonce(); - return true; + std::uint32_t client_version{}; + if (response.decode(client_version) == 0) { + std::string nonce; + if (response.decode(nonce) == 0) { + if (nonce == conn->nonce) { + conn->generate_nonce(); + return true; + } + + throw std::runtime_error("nonce mismatch"); } throw std::runtime_error("invalid nonce"); } - throw std::runtime_error("invalid nonce"); + throw std::runtime_error("invalid client version"); } throw std::runtime_error("decryption failed"); @@ -283,7 +288,7 @@ void packet_server::read_packet(std::shared_ptr conn, ret = request->decode(nonce); if (ret == 0) { if (nonce != conn->nonce) { - throw std::runtime_error("invalid nonce"); + throw std::runtime_error("nonce mismatch"); } conn->generate_nonce();