Support TCP on Windows

This commit is contained in:
B. Blechschmidt 2023-09-30 16:02:55 +02:00
parent 398d64eb64
commit a948b9c572

View file

@ -785,8 +785,9 @@ impl<'a> TunToProxy<'a> {
udp_associate: bool, udp_associate: bool,
) -> Result<ConnectionState> { ) -> Result<ConnectionState> {
let mut socket = tcp::Socket::new( let mut socket = tcp::Socket::new(
tcp::SocketBuffer::new(vec![0; 1024 * 128]), // TODO: Look into how the buffer size affects IP header length and fragmentation
tcp::SocketBuffer::new(vec![0; 1024 * 128]), tcp::SocketBuffer::new(vec![0; 1024]),
tcp::SocketBuffer::new(vec![0; 1024]),
); );
socket.set_ack_delay(None); socket.set_ack_delay(None);
socket.listen(dst)?; socket.listen(dst)?;
@ -794,7 +795,7 @@ impl<'a> TunToProxy<'a> {
let mut client = TcpStream::connect(server_addr)?; let mut client = TcpStream::connect(server_addr)?;
let token = self.new_token(); let token = self.new_token();
let i = Interest::READABLE; let i = Interest::READABLE | Interest::WRITABLE;
self.poll.registry().register(&mut client, token, i)?; self.poll.registry().register(&mut client, token, i)?;
let expiry = if udp_associate { let expiry = if udp_associate {
@ -819,7 +820,7 @@ impl<'a> TunToProxy<'a> {
proxy_handler, proxy_handler,
close_state: 0, close_state: 0,
wait_read: true, wait_read: true,
wait_write: false, wait_write: true,
udp_acco_expiry: expiry, udp_acco_expiry: expiry,
udp_socket, udp_socket,
udp_token, udp_token,
@ -887,8 +888,8 @@ impl<'a> TunToProxy<'a> {
state.wait_write = true; state.wait_write = true;
Self::update_mio_socket_interest(&mut self.poll, state)?; Self::update_mio_socket_interest(&mut self.poll, state)?;
} }
Err(error) => { Err(_) => {
return Err(error.into()); return Ok(());
} }
} }
} }