mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-22 06:49:08 +00:00
reading code
This commit is contained in:
parent
c1b322a01e
commit
c723adce4f
1 changed files with 13 additions and 20 deletions
|
@ -176,7 +176,7 @@ const UDP_ASSO_TIMEOUT: u64 = 10; // seconds
|
|||
const DNS_PORT: u16 = 53;
|
||||
|
||||
struct ConnectionState {
|
||||
smoltcp_handle: Option<SocketHandle>,
|
||||
smoltcp_handle: SocketHandle,
|
||||
mio_stream: TcpStream,
|
||||
token: Token,
|
||||
proxy_handler: Box<dyn ProxyHandler>,
|
||||
|
@ -351,7 +351,8 @@ impl<'a> TunToProxy<'a> {
|
|||
if let Some(mut state) = self.connection_map.remove(info) {
|
||||
self.expect_smoltcp_send()?;
|
||||
|
||||
if let Some(handle) = state.smoltcp_handle {
|
||||
{
|
||||
let handle = state.smoltcp_handle;
|
||||
let socket = self.sockets.get_mut::<tcp::Socket>(handle);
|
||||
socket.close();
|
||||
self.sockets.remove(handle);
|
||||
|
@ -369,7 +370,7 @@ impl<'a> TunToProxy<'a> {
|
|||
}
|
||||
|
||||
if let Err(err) = state.mio_stream.shutdown(Shutdown::Both) {
|
||||
log::trace!("Shutdown {} error \"{}\"", info, err);
|
||||
log::trace!("Shutdown 0 {} error \"{}\"", info, err);
|
||||
}
|
||||
|
||||
log::info!("Close {}", info);
|
||||
|
@ -396,11 +397,10 @@ impl<'a> TunToProxy<'a> {
|
|||
.proxy_handler
|
||||
.have_data(Direction::Outgoing(OutgoingDirection::ToClient))
|
||||
{
|
||||
if let Some(handle) = state.smoltcp_handle {
|
||||
// Close tun interface
|
||||
let socket = self.sockets.get_mut::<tcp::Socket>(handle);
|
||||
socket.close();
|
||||
}
|
||||
// Close tun interface
|
||||
let socket = self.sockets.get_mut::<tcp::Socket>(state.smoltcp_handle);
|
||||
socket.close();
|
||||
|
||||
closed_ends += 1;
|
||||
}
|
||||
|
||||
|
@ -414,7 +414,7 @@ impl<'a> TunToProxy<'a> {
|
|||
{
|
||||
// Close remote server
|
||||
if let Err(err) = state.mio_stream.shutdown(Shutdown::Write) {
|
||||
log::trace!("Shutdown {} error \"{}\"", info, err);
|
||||
log::trace!("Shutdown 1 {} error \"{}\"", info, err);
|
||||
}
|
||||
closed_ends += 1;
|
||||
}
|
||||
|
@ -434,10 +434,7 @@ impl<'a> TunToProxy<'a> {
|
|||
Some(state) => state,
|
||||
None => return Ok(()),
|
||||
};
|
||||
let socket = match state.smoltcp_handle {
|
||||
Some(handle) => self.sockets.get_mut::<tcp::Socket>(handle),
|
||||
None => return Ok(()),
|
||||
};
|
||||
let socket = self.sockets.get_mut::<tcp::Socket>(state.smoltcp_handle);
|
||||
let mut error = Ok(());
|
||||
while socket.can_recv() && error.is_ok() {
|
||||
socket.recv(|data| {
|
||||
|
@ -796,7 +793,7 @@ impl<'a> TunToProxy<'a> {
|
|||
(None, None)
|
||||
};
|
||||
let state = ConnectionState {
|
||||
smoltcp_handle: Some(handle),
|
||||
smoltcp_handle: handle,
|
||||
mio_stream: client,
|
||||
token,
|
||||
proxy_handler,
|
||||
|
@ -882,15 +879,11 @@ impl<'a> TunToProxy<'a> {
|
|||
|
||||
fn write_to_client(&mut self, token: Token, info: &ConnectionInfo) -> Result<(), Error> {
|
||||
while let Some(state) = self.connection_map.get_mut(info) {
|
||||
let handle = match state.smoltcp_handle {
|
||||
Some(handle) => handle,
|
||||
None => break,
|
||||
};
|
||||
let event = state.proxy_handler.peek_data(OutgoingDirection::ToClient);
|
||||
let buflen = event.buffer.len();
|
||||
let consumed;
|
||||
{
|
||||
let socket = self.sockets.get_mut::<tcp::Socket>(handle);
|
||||
let socket = self.sockets.get_mut::<tcp::Socket>(state.smoltcp_handle);
|
||||
if socket.may_send() {
|
||||
if let Some(virtual_dns) = &mut self.options.virtual_dns {
|
||||
// Unwrapping is fine because every smoltcp socket is bound to an.
|
||||
|
@ -1057,7 +1050,7 @@ impl<'a> TunToProxy<'a> {
|
|||
}
|
||||
// Closes the connection with the proxy
|
||||
if let Err(err) = state.mio_stream.shutdown(Shutdown::Both) {
|
||||
log::trace!("Shutdown error \"{}\"", err);
|
||||
log::trace!("Shutdown 2 error \"{}\"", err);
|
||||
}
|
||||
|
||||
log::info!("RESET {}", conn_info);
|
||||
|
|
Loading…
Add table
Reference in a new issue