add fragments to v0 outgoing packets

This commit is contained in:
Maple 2026-04-25 12:59:49 +02:00
commit 58c9e43fa3

View file

@ -106,17 +106,21 @@ impl<C: Crypto> Server<C> {
.expect("packet malformed in creation"),
);*/
let mut inner = conn.inner.lock().await;
let pieces = data.chunks(1000);
let max_piece = pieces.len() - 1;
let mut frag_num = 1;
for (i, piece) in pieces.enumerate() {
let seq = inner.server_packet_counter;
let packet = new_data_packet(
NEED_ACK | RELIABLE,
self.param.virtual_port,
(&self).param.virtual_port,
conn.addr.virtual_port,
data,
piece,
inner.server_packet_counter,
conn.session_id,
0,
if i == max_piece { 0 } else { frag_num },
&mut inner.crypto_instance,
&self.crypto,
&(&self).crypto,
);
inner.server_packet_counter += 1;
@ -125,8 +129,6 @@ impl<C: Crypto> Server<C> {
inner.unacknowledged_packets.insert(seq, packet);
drop(inner);
let conn = Arc::downgrade(&conn);
let this = Arc::downgrade(&self);
@ -150,6 +152,9 @@ impl<C: Crypto> Server<C> {
break;
}
});
frag_num += 1;
}
drop(inner);
}
async fn connection_thread(
self: Arc<Self>,