SSU2: Fix packet numbering to match spec

This commit is contained in:
zzz
2022-02-27 14:50:13 -05:00
parent 0c08a05bce
commit c19944384e
2 changed files with 8 additions and 3 deletions

View File

@@ -320,7 +320,8 @@ class PacketBuilder2 {
* @return ready to send packet, or null if there was a problem
*/
public UDPPacket buildSessionRequestPacket(OutboundEstablishState2 state) {
UDPPacket packet = buildLongPacketHeader(state.getSendConnID(), 0, SESSION_REQUEST_FLAG_BYTE,
long n = _context.random().signedNextInt() & 0xFFFFFFFFL;
UDPPacket packet = buildLongPacketHeader(state.getSendConnID(), n, SESSION_REQUEST_FLAG_BYTE,
state.getRcvConnID(), state.getToken());
DatagramPacket pkt = packet.getPacket();
@@ -357,7 +358,8 @@ class PacketBuilder2 {
* @return ready to send packet, or null if there was a problem
*/
public UDPPacket buildSessionCreatedPacket(InboundEstablishState2 state) {
UDPPacket packet = buildLongPacketHeader(state.getSendConnID(), 0, SESSION_CREATED_FLAG_BYTE,
long n = _context.random().signedNextInt() & 0xFFFFFFFFL;
UDPPacket packet = buildLongPacketHeader(state.getSendConnID(), n, SESSION_CREATED_FLAG_BYTE,
state.getRcvConnID(), state.getToken());
DatagramPacket pkt = packet.getPacket();
@@ -472,7 +474,7 @@ class PacketBuilder2 {
* @return ready to send packet, or null if there was a problem
*/
private UDPPacket buildSessionConfirmedPacket(OutboundEstablishState2 state, int numFragments, byte ourInfo[], int len, boolean gzip) {
UDPPacket packet = buildShortPacketHeader(state.getSendConnID(), 1, SESSION_CONFIRMED_FLAG_BYTE);
UDPPacket packet = buildShortPacketHeader(state.getSendConnID(), 0, SESSION_CONFIRMED_FLAG_BYTE);
DatagramPacket pkt = packet.getPacket();
InetAddress to;

View File

@@ -68,6 +68,9 @@ public class PeerState2 extends PeerState implements SSU2Payload.PayloadCallback
_rcvHeaderEncryptKey2 = rcvHdrKey2;
_receivedMessages = new SSU2Bitfield(256, 0);
_ackedMessages = new SSU2Bitfield(256, 0);
// For outbound, SessionConfirmed is packet 0
if (!isInbound)
_packetNumber.set(1);
}
// SSU 1 overrides