diff --git a/src/main.rs b/src/main.rs
index 19b3e40..ada7519 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -26,6 +26,7 @@ async fn main() {
let socks_address = args.socks_address;
let port = args.port;
let addr = SocketAddr::from(([127, 0, 0, 1], port));
+ let socks_address = socks_address.to_socket_addrs().unwrap().next().unwrap();
let make_service = make_service_fn(move |_| {
let socks_address = socks_address.clone();
async move {
@@ -41,21 +42,12 @@ async fn main() {
eprintln!("{:?}", e);
};
}
-async fn proxy(req: Request
, socks_address: String) -> Result> {
+async fn proxy(req: Request, socks_address: SocketAddr) -> Result> {
let _response = Response::new(Body::empty());
if req.method() == hyper::Method::CONNECT {
tokio::task::spawn(async move {
let plain = req.uri().authority().unwrap().as_str().to_string();
- let addr = req
- .uri()
- .authority()
- .unwrap()
- .as_str()
- .to_socket_addrs()
- .unwrap()
- .next()
- .unwrap();
match hyper::upgrade::on(req).await {
Ok(upgraded) => {
if let Err(e) = tunnel(upgraded, plain, socks_address).await {
@@ -73,19 +65,19 @@ async fn proxy(req: Request, socks_address: String) -> Result std::io::Result<()> {
let socket_address = socks_address.to_socket_addrs().unwrap().next().unwrap();
- let target_addr = plain.into_target_addr();
+ let target_addr = target_addr.into_target_addr();
let target_addr = target_addr.unwrap();
- let a = tokio_socks::tcp::Socks5Stream::connect(socket_address, target_addr)
+ let socks_stream = tokio_socks::tcp::Socks5Stream::connect(socket_address, target_addr)
.await
.expect("Cannot Connect to Socks5 Server");
let amounts = {
- let (mut server_rd, mut server_wr) = tokio::io::split(a);
+ let (mut server_rd, mut server_wr) = tokio::io::split(socks_stream);
let (mut client_rd, mut client_wr) = tokio::io::split(upgraded);
let client_to_server = tokio::io::copy(&mut client_rd, &mut server_wr);