diff --git a/api/src/main/java/club/minnced/discord/jdave/DaveSessionImpl.java b/api/src/main/java/club/minnced/discord/jdave/DaveSessionImpl.java index 5c89ce6..f0ae431 100644 --- a/api/src/main/java/club/minnced/discord/jdave/DaveSessionImpl.java +++ b/api/src/main/java/club/minnced/discord/jdave/DaveSessionImpl.java @@ -24,7 +24,14 @@ public static DaveSessionImpl create(@Nullable String authSessionId) { MemorySegment authSessionIdSegment = authSessionId != null ? local.allocateFrom(authSessionId) : MemorySegment.NULL; MemorySegment session = LibDaveSessionBinding.createSession(MemorySegment.NULL, authSessionIdSegment); - return new DaveSessionImpl(session); + + DaveSessionImpl result = new DaveSessionImpl(session); + // this part of memory is not initialized by libdave + // until we call #initialize or #reset meaning it just + // has a random value of whatever was there before making + // it very confusing to debug + result.setProtocolVersion((short) -1); + return result; } } 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..a0ba043 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 @@ -229,7 +229,7 @@ public synchronized void onMLSPrepareCommitTransition(int transitionId, @NonNull prepareProtocolTransition(transitionId, session.getProtocolVersion()); } else { sendInvalidCommitWelcome(transitionId); - handleDaveProtocolInit(transitionId); + handleDaveProtocolInit(session.getProtocolVersion()); } } } @@ -247,7 +247,7 @@ public synchronized void onMLSWelcome(int transitionId, @NonNull ByteBuffer welc prepareProtocolTransition(transitionId, session.getProtocolVersion()); } else { sendInvalidCommitWelcome(transitionId); - handleDaveProtocolInit(transitionId); + handleDaveProtocolInit(session.getProtocolVersion()); } } @@ -292,9 +292,10 @@ private void prepareProtocolTransition(int transitionId, int protocolVersion) { encryptor.processTransition(protocolVersion); } else { preparedTransitions.put(transitionId, protocolVersion); - currentProtocolVersion = protocolVersion; callbacks.sendDaveProtocolReadyForTransition(transitionId); } + + currentProtocolVersion = protocolVersion; } private void executeProtocolTransition(int transitionId) {