add base code for acknowledgements
This commit is contained in:
parent
08e67936c5
commit
9cb4c6a4f1
1 changed files with 14 additions and 10 deletions
|
|
@ -12,7 +12,7 @@ use rc4::consts::U256;
|
||||||
use rustls::internal::msgs::handshake::SessionId;
|
use rustls::internal::msgs::handshake::SessionId;
|
||||||
use tokio::sync::mpsc::{channel, Receiver, Sender};
|
use tokio::sync::mpsc::{channel, Receiver, Sender};
|
||||||
use crate::prudp::packet::{flags, PacketOption, PRUDPPacket, types, VirtualPort};
|
use crate::prudp::packet::{flags, PacketOption, PRUDPPacket, types, VirtualPort};
|
||||||
use crate::prudp::packet::flags::{ACK, HAS_SIZE};
|
use crate::prudp::packet::flags::{ACK, HAS_SIZE, MULTI_ACK};
|
||||||
use crate::prudp::packet::PacketOption::{ConnectionSignature, MaximumSubstreamId, SupportedFunctions};
|
use crate::prudp::packet::PacketOption::{ConnectionSignature, MaximumSubstreamId, SupportedFunctions};
|
||||||
use crate::prudp::packet::types::{CONNECT, SYN};
|
use crate::prudp::packet::types::{CONNECT, SYN};
|
||||||
use crate::prudp::router::{Error, Router};
|
use crate::prudp::router::{Error, Router};
|
||||||
|
|
@ -141,13 +141,14 @@ impl SocketImpl {
|
||||||
|
|
||||||
let mut conn = conn.lock().await;
|
let mut conn = conn.lock().await;
|
||||||
|
|
||||||
if //((packet.header.types_and_flags.get_flags() & flags::NEED_ACK) != 0) ||
|
if (packet.header.types_and_flags.get_flags() & ACK) != 0 {
|
||||||
//((packet.header.types_and_flags.get_flags() & flags::ACK) != 0) ||
|
info!("acknowledgement recieved");
|
||||||
//((packet.header.types_and_flags.get_flags() & flags::RELIABLE) != 0) ||
|
return;
|
||||||
((packet.header.types_and_flags.get_flags() & flags::MULTI_ACK) != 0) {
|
}
|
||||||
let copy = packet.header.types_and_flags;
|
|
||||||
|
|
||||||
error!("{:?}", copy)
|
if (packet.header.types_and_flags.get_flags() & MULTI_ACK) != 0 {
|
||||||
|
info!("acknowledgement recieved");
|
||||||
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -205,7 +206,9 @@ impl SocketImpl {
|
||||||
match option {
|
match option {
|
||||||
MaximumSubstreamId(max_substream) => response_packet.options.push(MaximumSubstreamId(*max_substream)),
|
MaximumSubstreamId(max_substream) => response_packet.options.push(MaximumSubstreamId(*max_substream)),
|
||||||
SupportedFunctions(funcs) => response_packet.options.push(SupportedFunctions(*funcs)),
|
SupportedFunctions(funcs) => response_packet.options.push(SupportedFunctions(*funcs)),
|
||||||
ConnectionSignature(sig) => conn.server_signature = *sig,
|
ConnectionSignature(sig) => {
|
||||||
|
conn.server_signature = *sig
|
||||||
|
},
|
||||||
_ => {/* ? */}
|
_ => {/* ? */}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -216,6 +219,9 @@ impl SocketImpl {
|
||||||
|
|
||||||
// todo: implement something to do secure servers
|
// todo: implement something to do secure servers
|
||||||
|
|
||||||
|
if conn.server_signature == Default::default(){
|
||||||
|
error!("didn't get connection signature from client")
|
||||||
|
}
|
||||||
|
|
||||||
response_packet.calculate_and_assign_signature(self.access_key, None, Some(conn.server_signature));
|
response_packet.calculate_and_assign_signature(self.access_key, None, Some(conn.server_signature));
|
||||||
|
|
||||||
|
|
@ -224,8 +230,6 @@ impl SocketImpl {
|
||||||
response_packet.write_to(&mut vec).expect("somehow failed to convert backet to bytes");
|
response_packet.write_to(&mut vec).expect("somehow failed to convert backet to bytes");
|
||||||
|
|
||||||
self.socket.send_to(&vec, connection.regular_socket_addr).await.expect("failed to send data back");
|
self.socket.send_to(&vec, connection.regular_socket_addr).await.expect("failed to send data back");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
_ => unimplemented!("unimplemented packet type: {}", packet.header.types_and_flags.get_types())
|
_ => unimplemented!("unimplemented packet type: {}", packet.header.types_and_flags.get_types())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue