fix blocked issue
This commit is contained in:
@@ -704,7 +704,7 @@ impl Network {
|
||||
}
|
||||
}
|
||||
|
||||
// Do TCPv4 + WSv4 in series because they may use the same connection 5-tuple
|
||||
// Do TCPv4. Possibly do WSv4 if it is on a different port
|
||||
if protocol_config.family_global.contains(AddressType::IPV4) {
|
||||
if protocol_config.inbound.contains(ProtocolType::TCP) {
|
||||
futures.push(
|
||||
@@ -747,7 +747,7 @@ impl Network {
|
||||
}
|
||||
}
|
||||
|
||||
// Do TCPv6 + WSv6 in series because they may use the same connection 5-tuple
|
||||
// Do TCPv6. Possibly do WSv6 if it is on a different port
|
||||
if protocol_config.family_global.contains(AddressType::IPV6) {
|
||||
if protocol_config.inbound.contains(ProtocolType::TCP) {
|
||||
futures.push(
|
||||
|
@@ -95,6 +95,18 @@ pub fn new_bound_first_udp_socket(local_address: SocketAddr) -> io::Result<Socke
|
||||
Ok(socket)
|
||||
}
|
||||
|
||||
#[instrument(level = "trace", ret)]
|
||||
pub fn new_unbound_tcp_socket(domain: Domain) -> io::Result<Socket> {
|
||||
let socket = Socket::new(domain, Type::STREAM, Some(Protocol::TCP))?;
|
||||
if let Err(e) = socket.set_nodelay(true) {
|
||||
log_net!(error "Couldn't set TCP nodelay: {}", e);
|
||||
}
|
||||
if domain == Domain::IPV6 {
|
||||
socket.set_only_v6(true)?;
|
||||
}
|
||||
Ok(socket)
|
||||
}
|
||||
|
||||
#[instrument(level = "trace", ret)]
|
||||
pub fn new_unbound_shared_tcp_socket(domain: Domain) -> io::Result<Socket> {
|
||||
let socket = Socket::new(domain, Type::STREAM, Some(Protocol::TCP))?;
|
||||
|
@@ -162,7 +162,7 @@ impl RawTcpProtocolHandler {
|
||||
// Make a shared socket
|
||||
let socket = match local_address {
|
||||
Some(a) => new_bound_shared_tcp_socket(a)?,
|
||||
None => new_unbound_shared_tcp_socket(socket2::Domain::for_address(socket_addr))?,
|
||||
None => new_unbound_tcp_socket(socket2::Domain::for_address(socket_addr))?,
|
||||
};
|
||||
|
||||
// Non-blocking connect to remote address
|
||||
|
@@ -246,9 +246,7 @@ impl WebsocketProtocolHandler {
|
||||
// Make a shared socket
|
||||
let socket = match local_address {
|
||||
Some(a) => new_bound_shared_tcp_socket(a)?,
|
||||
None => {
|
||||
new_unbound_shared_tcp_socket(socket2::Domain::for_address(remote_socket_addr))?
|
||||
}
|
||||
None => new_unbound_tcp_socket(socket2::Domain::for_address(remote_socket_addr))?,
|
||||
};
|
||||
|
||||
// Non-blocking connect to remote address
|
||||
|
@@ -323,7 +323,7 @@ impl NetworkConnection {
|
||||
}
|
||||
Err(e) => {
|
||||
// Connection unable to receive, closed
|
||||
log_net!(error e);
|
||||
log_net!(error "connection unable to receive: {}", e);
|
||||
RecvLoopAction::Finish
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user