Skip to content

Commit 56723ca

Browse files
committed
fix crash due to unwrap()
1 parent e3039fb commit 56723ca

File tree

3 files changed

+29
-41
lines changed

3 files changed

+29
-41
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "omnip"
3-
version = "0.6.8"
3+
version = "0.6.9"
44
edition = "2021"
55

66
[lib]

src/server.rs

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -220,29 +220,6 @@ impl Server {
220220
let orig_server_addr = cfg.server_addr.net_addr.to_socket_addr().unwrap();
221221
let require_quic_server = cfg.server_addr.is_quic_proto;
222222

223-
// if is_udp_proto && !require_quic_server {
224-
// self.bind_udp_server(orig_server_addr, true).await?;
225-
// return Ok(());
226-
// }
227-
228-
// if is_tcp_or_udp_proto {
229-
// // we need to start the tcp or udp server
230-
// if let Some(ProtoType::Udp) = cfg.server_addr.proto {
231-
// if !require_quic_server {
232-
// let udp_server = self.bind_udp_server(proxy_server_addr, true).await?;
233-
// }
234-
// } else {
235-
// }
236-
// }
237-
238-
// // let (require_tcp, require_udp) = self.is_tcp_or_udp_server_required();
239-
// let udp_server_addr = if let Some(ProtoType::Udp) = cfg.server_addr.proto {
240-
// let udp_server = self.bind_udp_server(proxy_server_addr, true).await?;
241-
// udp_server.local_addr().ok()
242-
// } else {
243-
// inner_state!(self, udp_upstream)
244-
// };
245-
246223
let (proxy_tcp_server_handle, quic_server_tcp_upstream, quic_server_udp_upstream) =
247224
if !is_udp_proto {
248225
let tcp_server_addr = if require_quic_server {
@@ -717,10 +694,12 @@ impl Server {
717694
}
718695

719696
if outbound_type == OutboundType::Direct {
720-
debug!(
721-
"serve request directly: {addr} from {}",
722-
inbound_stream.peer_addr().unwrap()
723-
);
697+
let peer_addr = inbound_stream.peer_addr().map_err(|e| {
698+
debug!("unexpected error: {e}");
699+
ProxyError::InternalError
700+
})?;
701+
702+
debug!("serve request directly: {addr} from {peer_addr}",);
724703
outbound_stream = match &addr.host {
725704
Host::Domain(domain) => {
726705
let resolver = if addr.is_internal_domain() {
@@ -736,16 +715,21 @@ impl Server {
736715
let mut outbound_stream = None;
737716
for ip in ip_arr {
738717
let resolved_ip = NetAddr::from_ip(ip, addr.port);
739-
if resolved_ip.is_loopback()
740-
&& addr.port == inbound_stream.local_addr().unwrap().port()
741-
{
742-
outbound_stream = Self::connect_to_dashboard(
743-
params.dashboard_addr,
744-
&inbound_stream,
745-
params.tcp_nodelay,
746-
)
747-
.await?;
748-
break;
718+
if resolved_ip.is_loopback() {
719+
let local_addr = inbound_stream.local_addr().map_err(|e| {
720+
debug!("unexpected error: {e}");
721+
ProxyError::InternalError
722+
})?;
723+
724+
if addr.port == local_addr.port() {
725+
outbound_stream = Self::connect_to_dashboard(
726+
params.dashboard_addr,
727+
&inbound_stream,
728+
params.tcp_nodelay,
729+
)
730+
.await?;
731+
break;
732+
}
749733
}
750734

751735
let stream = Self::create_tcp_stream(
@@ -763,8 +747,12 @@ impl Server {
763747
}
764748

765749
Host::IP(ip) => {
766-
let inbound_addr = inbound_stream.local_addr().unwrap();
767-
if ip == &inbound_addr.ip() && addr.port == inbound_addr.port() {
750+
let local_addr = inbound_stream.local_addr().map_err(|e| {
751+
debug!("unexpected error: {e}");
752+
ProxyError::InternalError
753+
})?;
754+
755+
if ip == &local_addr.ip() && addr.port == local_addr.port() {
768756
Self::connect_to_dashboard(
769757
params.dashboard_addr,
770758
&inbound_stream,

0 commit comments

Comments
 (0)