network fixes, still a lot more to do for tcp
This commit is contained in:
@@ -81,7 +81,7 @@ pub fn new_shared_tcp_socket(local_address: SocketAddr) -> Result<socket2::Socke
|
||||
let domain = Domain::for_address(local_address);
|
||||
let socket = Socket::new(domain, Type::STREAM, Some(Protocol::TCP))
|
||||
.map_err(map_to_string)
|
||||
.map_err(logthru_net!())?;
|
||||
.map_err(logthru_net!("failed to create TCP socket"))?;
|
||||
if let Err(e) = socket.set_linger(None) {
|
||||
log_net!(error "Couldn't set TCP linger: {}", e);
|
||||
}
|
||||
@@ -100,9 +100,11 @@ pub fn new_shared_tcp_socket(local_address: SocketAddr) -> Result<socket2::Socke
|
||||
}
|
||||
|
||||
let socket2_addr = socket2::SockAddr::from(local_address);
|
||||
if let Err(e) = socket.bind(&socket2_addr) {
|
||||
log_net!(error "failed to bind TCP socket: {}", e);
|
||||
}
|
||||
socket
|
||||
.bind(&socket2_addr)
|
||||
.map_err(|e| format!("failed to bind TCP socket: {}", e))?;
|
||||
|
||||
log_net!("created shared tcp socket on {:?}", &local_address);
|
||||
|
||||
Ok(socket)
|
||||
}
|
||||
|
@@ -134,7 +134,7 @@ impl RawTcpProtocolHandler {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn on_accept_async(
|
||||
async fn on_accept_async(
|
||||
self,
|
||||
stream: AsyncPeekStream,
|
||||
socket_addr: SocketAddr,
|
||||
@@ -181,7 +181,12 @@ impl RawTcpProtocolHandler {
|
||||
socket
|
||||
.connect(&remote_socket2_addr)
|
||||
.map_err(map_to_string)
|
||||
.map_err(logthru_net!(error "addr={}", remote_socket_addr))?;
|
||||
.map_err(logthru_net!(error "local_address={} remote_addr={}", local_address, remote_socket_addr))?;
|
||||
log_net!(
|
||||
"tcp connect successful: local_address={} remote_addr={}",
|
||||
local_address,
|
||||
remote_socket_addr
|
||||
);
|
||||
let std_stream: std::net::TcpStream = socket.into();
|
||||
let ts = TcpStream::from(std_stream);
|
||||
|
||||
@@ -189,7 +194,7 @@ impl RawTcpProtocolHandler {
|
||||
let local_address = ts
|
||||
.local_addr()
|
||||
.map_err(map_to_string)
|
||||
.map_err(logthru_net!())?;
|
||||
.map_err(logthru_net!("could not get local address from TCP stream"))?;
|
||||
let ps = AsyncPeekStream::new(ts);
|
||||
let peer_addr = PeerAddress::new(
|
||||
SocketAddress::from_socket_addr(remote_socket_addr),
|
||||
@@ -225,7 +230,7 @@ impl RawTcpProtocolHandler {
|
||||
|
||||
let mut stream = TcpStream::connect(socket_addr)
|
||||
.await
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
.map_err(|e| format!("failed to connect TCP for unbound message: {}", e))?;
|
||||
stream.write_all(&data).await.map_err(|e| format!("{}", e))
|
||||
}
|
||||
}
|
||||
|
@@ -263,7 +263,7 @@ impl WebsocketProtocolHandler {
|
||||
socket
|
||||
.connect(&remote_socket2_addr)
|
||||
.map_err(map_to_string)
|
||||
.map_err(logthru_net!(error "addr={}", remote_socket_addr))?;
|
||||
.map_err(logthru_net!(error "local_address={} remote_socket_addr={}", local_address, remote_socket_addr))?;
|
||||
let std_stream: std::net::TcpStream = socket.into();
|
||||
let tcp_stream = TcpStream::from(std_stream);
|
||||
|
||||
|
Reference in New Issue
Block a user