diff --git a/api/src/main/java/club/minnced/discord/jdave/manager/DaveSessionManager.java b/api/src/main/java/club/minnced/discord/jdave/manager/DaveSessionManager.java index 9b08f78..b16951a 100644 --- a/api/src/main/java/club/minnced/discord/jdave/manager/DaveSessionManager.java +++ b/api/src/main/java/club/minnced/discord/jdave/manager/DaveSessionManager.java @@ -138,6 +138,10 @@ public synchronized void addUser(long userId) { return; } + if (decryptors.containsKey(userId)) { + return; + } + log.debug("Adding user {}", userId); DaveDecryptor decryptor = decryptors.computeIfAbsent(userId, id -> DaveDecryptor.create(id, session)); decryptor.prepareTransition(currentProtocolVersion); @@ -299,7 +303,13 @@ private void prepareProtocolTransition(int transitionId, int protocolVersion) { private void executeProtocolTransition(int transitionId) { Integer protocolVersion = preparedTransitions.remove(transitionId); + if (protocolVersion == null) { + if (transitionId == DaveConstants.INIT_TRANSITION_ID) { + log.debug("Passing through transition with ID 0"); + return; + } + log.warn("Unexpected Transition ID {}", transitionId); return; }