@@ -13,6 +13,7 @@ use tokio_tungstenite::tungstenite::http::StatusCode;
1313use tokio_tungstenite:: tungstenite:: Message ;
1414use tokio_tungstenite:: { connect_async, MaybeTlsStream , WebSocketStream } ;
1515use tracing:: { debug, error, trace, warn} ;
16+ use tungstenite:: client:: IntoClientRequest ;
1617
1718use super :: channel:: { CableChannel , CableChannelDevice } ;
1819use super :: qr_code_device:: CableQrCodeDevice ;
@@ -140,9 +141,13 @@ pub async fn connect<'d>(
140141 tunnel_domain, routing_id, tunnel_id
141142 ) ;
142143 debug ! ( ?connect_url, "Connecting to tunnel server" ) ;
143- // TODO: set protocol: fido.cable
144+ let mut request = connect_url. into_client_request ( ) . or ( Err ( Error :: Transport ( TransportError :: InvalidEndpoint ) ) ) ?;
145+ request. headers_mut ( ) . insert (
146+ "Sec-WebSocket-Protocol" ,
147+ "fido.cable" . parse ( ) . or ( Err ( Error :: Transport ( TransportError :: InvalidEndpoint ) ) ) ?,
148+ ) ;
144149
145- let ( mut ws_stream, response) = match connect_async ( & connect_url ) . await {
150+ let ( mut ws_stream, response) = match connect_async ( request ) . await {
146151 Ok ( ( ws_stream, response) ) => ( ws_stream, response) ,
147152 Err ( e) => {
148153 error ! ( ?e, "Failed to connect to tunnel server" ) ;
0 commit comments