fix(phantun) better UDP error handling

When UDP send fails, print a proper error message and close the
connection, instead of `panic`ing.
This commit is contained in:
Datong Sun 2021-09-27 09:49:50 -07:00
parent e3e50f8a9e
commit 5a6ebf52ea
2 changed files with 10 additions and 3 deletions

View File

@ -139,7 +139,11 @@ async fn main() {
match res {
Some(size) => {
if size > 0 {
udp_sock.send(&buf_tcp[..size]).await.unwrap();
if let Err(e) = udp_sock.send(&buf_tcp[..size]).await {
connections.write().await.remove(&addr);
error!("Unable to send UDP packet to {}: {}, closing connection", e, addr);
return;
}
}
},
None => {

View File

@ -3,7 +3,7 @@ extern crate dndx_fork_tokio_tun as tokio_tun;
use clap::{App, Arg};
use fake_tcp::packet::MAX_PACKET_LEN;
use fake_tcp::Stack;
use log::info;
use log::{error, info};
use std::net::SocketAddrV4;
use tokio::net::UdpSocket;
use tokio::time::{self, Duration};
@ -90,7 +90,10 @@ async fn main() {
match res {
Some(size) => {
if size > 0 {
udp_sock.send(&buf_tcp[..size]).await.unwrap();
if let Err(e) = udp_sock.send(&buf_tcp[..size]).await {
error!("Unable to send UDP packet to {}: {}, closing connection", e, remote_addr);
return;
}
}
},
None => { return; },