From 956344f1c97c47e24b0e761f9ebdc8294a0ce01d Mon Sep 17 00:00:00 2001 From: Manevolent Date: Tue, 11 Sep 2018 08:21:16 -0400 Subject: [PATCH] Better logging for decryption errors --- .../client/AbstractTeamspeakClientSocket.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java index ed99b09..0d33b65 100644 --- a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java +++ b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java @@ -527,9 +527,11 @@ public abstract class AbstractTeamspeakClientSocket Ts3Debugging.debug("[PROTOCOL] DECRYPT " + networkPacket.getHeader().getType().name() + " generation=" + networkPacket.getHeader().getGeneration()); + PacketTransformation transformation = getTransformation(); + try { packetBuffer = ByteBuffer.wrap( - getTransformation().decrypt( + transformation.decrypt( networkPacket.getHeader(), packetBuffer, networkPacket.getDatagram().getLength() - @@ -537,7 +539,15 @@ public abstract class AbstractTeamspeakClientSocket ) ).order(ByteOrder.BIG_ENDIAN); } catch (InvalidCipherTextException e) { - throw new IOException("failed to decrypt " + networkPacket.getHeader().getType().name(), e); + throw new IOException( + "failed to decrypt " + networkPacket.getHeader().getType().name() + + " (" + + "transformation=" + transformation.getClass() + + ", state=" + getState() + + ", id=" + packet.getHeader().getPacketId() + + ", generation=" + networkPacket.getHeader().getGeneration(), + e + ); } } @@ -549,7 +559,8 @@ public abstract class AbstractTeamspeakClientSocket } else { Ts3Debugging.debug("[PROTOCOL] READ " + networkPacket.getHeader().getType().name()); - if (packet.getHeader().getPacketFlag(HeaderFlag.COMPRESSED) && packet.getHeader().getType().isCompressible()) + if (packet.getHeader().getPacketFlag(HeaderFlag.COMPRESSED) && + packet.getHeader().getType().isCompressible()) packet.setBody(new PacketBodyCompressed(networkPacket.getHeader().getType(), getRole().getIn())); }