fix ws
This commit is contained in:
		@@ -231,7 +231,23 @@ impl Network {
 | 
			
		||||
            match unord.next().timeout_at(stop_token.clone()).await {
 | 
			
		||||
                Ok(Some(Some(ddi))) => {
 | 
			
		||||
                    // Found some new dial info for this protocol/address combination
 | 
			
		||||
                    self.update_with_detected_dial_info(ddi).await?
 | 
			
		||||
                    self.update_with_detected_dial_info(ddi.clone()).await?;
 | 
			
		||||
 | 
			
		||||
                    // Add WS dialinfo as well if it is on the same port as TCP
 | 
			
		||||
                    if let DetectedDialInfo::Detected(did) = &ddi {
 | 
			
		||||
                        if did.dial_info.protocol_type() == ProtocolType::TCP && tcp_same_port {
 | 
			
		||||
                            // Make WS dialinfo as well with same socket address as TCP
 | 
			
		||||
                            let ws_ddi = DetectedDialInfo::Detected(DialInfoDetail {
 | 
			
		||||
                                dial_info: self.make_dial_info(
 | 
			
		||||
                                    did.dial_info.socket_address(),
 | 
			
		||||
                                    ProtocolType::WS,
 | 
			
		||||
                                ),
 | 
			
		||||
                                class: did.class,
 | 
			
		||||
                            });
 | 
			
		||||
                            // Add additional WS dialinfo
 | 
			
		||||
                            self.update_with_detected_dial_info(ws_ddi).await?;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                Ok(Some(None)) => {
 | 
			
		||||
                    // Found no new dial info for this protocol/address combination
 | 
			
		||||
@@ -285,4 +301,21 @@ impl Network {
 | 
			
		||||
 | 
			
		||||
        out
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Make a dialinfo from an address and protocol type
 | 
			
		||||
    pub fn make_dial_info(&self, addr: SocketAddress, protocol_type: ProtocolType) -> DialInfo {
 | 
			
		||||
        match protocol_type {
 | 
			
		||||
            ProtocolType::UDP => DialInfo::udp(addr),
 | 
			
		||||
            ProtocolType::TCP => DialInfo::tcp(addr),
 | 
			
		||||
            ProtocolType::WS => {
 | 
			
		||||
                let c = self.config.get();
 | 
			
		||||
                DialInfo::try_ws(
 | 
			
		||||
                    addr,
 | 
			
		||||
                    format!("ws://{}/{}", addr, c.network.protocol.ws.path),
 | 
			
		||||
                )
 | 
			
		||||
                .unwrap()
 | 
			
		||||
            }
 | 
			
		||||
            ProtocolType::WSS => panic!("none of the discovery functions are used for wss"),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user