dont crash input server on udp in use
parent
9cc5983223
commit
14d06e004b
|
|
@ -118,12 +118,18 @@ impl InputEngine for InputEngineUDP {
|
||||||
let addr = "0.0.0.0:".to_string() + &self.port.to_string();
|
let addr = "0.0.0.0:".to_string() + &self.port.to_string();
|
||||||
println!("$ echo -n 'hello world' | nc -4u -w0 localhost {}", &self.port.to_string());
|
println!("$ echo -n 'hello world' | nc -4u -w0 localhost {}", &self.port.to_string());
|
||||||
if self.last_socket.is_none() {
|
if self.last_socket.is_none() {
|
||||||
self.last_socket = Some(std::net::UdpSocket::bind(addr).unwrap());
|
let result = std::net::UdpSocket::bind(&addr);
|
||||||
|
if result.is_err() {
|
||||||
|
println!("InputEngineUDP: failed to bind to {}: {:?}", &addr, result.err());
|
||||||
|
return Vec::<char>::new();
|
||||||
|
}
|
||||||
|
self.last_socket = Some(result.unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut buf = [0; 128];
|
let mut buf = [0; 128];
|
||||||
let result = self.last_socket.as_ref().unwrap().recv_from(&mut buf);
|
let result = self.last_socket.as_ref().unwrap().recv_from(&mut buf);
|
||||||
if result.is_err() {
|
if result.is_err() {
|
||||||
|
println!("InputEngineUDP: failed to recv: {:?}", result.err());
|
||||||
self.last_socket = None;
|
self.last_socket = None;
|
||||||
return Vec::<char>::new();
|
return Vec::<char>::new();
|
||||||
}
|
}
|
||||||
|
|
@ -241,10 +247,13 @@ impl OutputEngine for OutputEngineUDP {
|
||||||
if self.last_socket.is_none() {
|
if self.last_socket.is_none() {
|
||||||
let result = std::net::UdpSocket::bind("127.0.0.1:".to_string() + &(self.port+10).to_string());
|
let result = std::net::UdpSocket::bind("127.0.0.1:".to_string() + &(self.port+10).to_string());
|
||||||
if result.is_err() {
|
if result.is_err() {
|
||||||
|
println!("OutputEngineUDP: failed to bind to 127.0.0.1:{}: {:?}", &(self.port+10).to_string(), result.err());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.last_socket = Some(result.unwrap());
|
self.last_socket = Some(result.unwrap());
|
||||||
if self.last_socket.as_ref().unwrap().connect(self.host.to_string() + ":" + &self.port.to_string()).is_err() {
|
let result = self.last_socket.as_ref().unwrap().connect(self.host.to_string() + ":" + &self.port.to_string());
|
||||||
|
if result.is_err() {
|
||||||
|
println!("OutputEngineUDP: failed to connect to {}:{}: {:?}", self.host.to_string(), self.port.to_string(), result.err());
|
||||||
self.last_socket = None;
|
self.last_socket = None;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -252,6 +261,7 @@ impl OutputEngine for OutputEngineUDP {
|
||||||
|
|
||||||
let result = self.last_socket.as_ref().unwrap().send(&v.iter().cloned().collect::<String>().as_bytes());
|
let result = self.last_socket.as_ref().unwrap().send(&v.iter().cloned().collect::<String>().as_bytes());
|
||||||
if result.is_err() {
|
if result.is_err() {
|
||||||
|
println!("OutputEngineUDP: failed to send: {:?}", result.err());
|
||||||
self.last_socket = None;
|
self.last_socket = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue