create_request: avoid u16 overflow

This commit is contained in:
Adrien Delorme 2023-04-23 17:55:52 +02:00
parent b52824df6f
commit aa4914eda4
No known key found for this signature in database

View file

@ -81,7 +81,12 @@ impl DhtState {
fn create_request(&mut self, request: Request, addr: SocketAddr) -> Message<ByteString> {
let transaction_id = self.next_transaction_id;
let transaction_id_buf = [(transaction_id >> 8) as u8, (transaction_id & 0xff) as u8];
self.next_transaction_id += 1;
self.next_transaction_id = if transaction_id == u16::MAX {
0
} else {
transaction_id + 1
};
let message = match request {
Request::GetPeers(info_hash) => Message {
transaction_id: ByteString::from(transaction_id_buf.as_ref()),