mirror of
https://bitbucket.org/projectswg/cucore.git
synced 2026-10-20 12:02:58 -04:00
Optimized OutboundNetworkHandler to not re-encrypt old OOO data
This commit is contained in:
@@ -91,7 +91,7 @@ public class OutboundNetworkHandler {
|
||||
while (it.hasNext()) {
|
||||
SequencedPacket sp = it.next();
|
||||
if (sp.getSequence() <= sequence)
|
||||
pushAssembledEncrypted(sp.getPacket());
|
||||
pushAssembledUnencrypted(sp.getPacket()); // Pre-encrypted before putting into list
|
||||
else
|
||||
break;
|
||||
}
|
||||
@@ -110,11 +110,12 @@ public class OutboundNetworkHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private void pushAssembledEncrypted(byte [] data) {
|
||||
private byte [] pushAssembledEncrypted(byte [] data) {
|
||||
data = Encryption.encode(data, crc);
|
||||
synchronized (assembleQueue) {
|
||||
assembleQueue.add(data);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
private void pushAssembledUnencrypted(byte [] data) {
|
||||
@@ -164,8 +165,8 @@ public class OutboundNetworkHandler {
|
||||
int lastSeq = updateSequencesMulti((short)(sendSequence+count), m);
|
||||
for (Fragmented f : Fragmented.encode(m.encode(), sendSequence)) {
|
||||
byte [] encoded = f.encode().array();
|
||||
pushSequencedPacket(f.getSequence(), encoded);
|
||||
pushAssembledEncrypted(encoded);
|
||||
byte [] encrypted = pushAssembledEncrypted(encoded);
|
||||
pushSequencedPacket(f.getSequence(), encrypted);
|
||||
}
|
||||
sendSequence = (short) (lastSeq + 1);
|
||||
return count;
|
||||
@@ -183,16 +184,16 @@ public class OutboundNetworkHandler {
|
||||
int lastSeq = updateSequenceData((short)(sendSequence+count), d);
|
||||
for (Fragmented f : Fragmented.encode(d.encode(), sendSequence)) {
|
||||
byte [] encoded = f.encode().array();
|
||||
pushSequencedPacket(f.getSequence(), encoded);
|
||||
pushAssembledEncrypted(encoded);
|
||||
byte [] encrypted = pushAssembledEncrypted(encoded);
|
||||
pushSequencedPacket(f.getSequence(), encrypted);
|
||||
}
|
||||
sendSequence = (short) lastSeq;
|
||||
return count;
|
||||
} else {
|
||||
d.setSequence(sendSequence++);
|
||||
byte [] encoded = d.encode().array();
|
||||
pushSequencedPacket(d.getSequence(), encoded);
|
||||
pushAssembledEncrypted(encoded);
|
||||
byte [] encrypted = pushAssembledEncrypted(encoded);
|
||||
pushSequencedPacket(d.getSequence(), encrypted);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user