feat: packet parsing!

This commit is contained in:
kozabrada123 2023-11-12 14:59:28 +01:00
parent b973ecb447
commit 9460219d14
2 changed files with 25 additions and 6 deletions

View File

@ -51,7 +51,7 @@ jsonwebtoken = "8.3.0"
log = "0.4.20" log = "0.4.20"
async-trait = "0.1.73" async-trait = "0.1.73"
chorus-macros = "0.2.0" chorus-macros = "0.2.0"
discortp = { version = "0.5.0", optional = true, features = ["rtp", "discord"] } discortp = { version = "0.5.0", optional = true, features = ["rtp", "discord", "demux"] }
[dev-dependencies] [dev-dependencies]
tokio = { version = "1.32.0", features = ["full"] } tokio = { version = "1.32.0", features = ["full"] }

View File

@ -6,7 +6,9 @@ use log::{info, warn};
use tokio::net::UdpSocket; use tokio::net::UdpSocket;
use discortp::{ use discortp::{
demux::{demux, Demuxed},
discord::{IpDiscovery, IpDiscoveryPacket}, discord::{IpDiscovery, IpDiscoveryPacket},
rtp::RtpPacket,
MutablePacket, Packet, MutablePacket, Packet,
}; };
@ -98,15 +100,12 @@ impl UdpHandler {
loop { loop {
let mut buf: Vec<u8> = Vec::new(); let mut buf: Vec<u8> = Vec::new();
let size = IpDiscoveryPacket::minimum_packet_size() + 64;
// wtf // wtf
for _i in 0..size { for _i in 0..1_000 {
buf.push(0); buf.push(0);
} }
let msg = self.socket.recv(&mut buf).await; let msg = self.socket.recv(&mut buf).await;
if let Ok(size) = msg { if let Ok(size) = msg {
info!("VUDP: Receiving messsage: {:?} - {}", buf.clone(), size);
self.handle_message(&buf[0..size]).await; self.handle_message(&buf[0..size]).await;
continue; continue;
} }
@ -118,6 +117,26 @@ impl UdpHandler {
/// Handles a message buf /// Handles a message buf
async fn handle_message(&self, buf: &[u8]) { async fn handle_message(&self, buf: &[u8]) {
info!("VUDP: Received messsage {:?}", buf); info!("VUDP: Received messsage");
let parsed = demux(buf);
match parsed {
Demuxed::Rtp(rtp) => {
let data = buf[11..buf.len()].to_vec();
info!("VUDP: Parsed packet as rtp! {:?}; data: {:?}", rtp, data);
}
Demuxed::Rtcp(rtcp) => {
info!("VUDP: Parsed packet as rtcp! {:?}", rtcp);
}
Demuxed::FailedParse(e) => {
warn!("VUDP: Failed to parse packet: {:?}", e);
}
Demuxed::TooSmall => {
unreachable!()
}
}
return;
} }
} }