feat: packet parsing!
This commit is contained in:
parent
b973ecb447
commit
9460219d14
|
@ -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"] }
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue