File tree Expand file tree Collapse file tree 3 files changed +20
-27
lines changed Expand file tree Collapse file tree 3 files changed +20
-27
lines changed Original file line number Diff line number Diff line change @@ -14,9 +14,9 @@ On Unix it uses `ssh-agent.sock` Unix domain socket while on Windows it uses a n
14
14
15
15
``` rust,no_run
16
16
#[cfg(not(windows))]
17
- use tokio::net::UnixListener;
17
+ use tokio::net::UnixListener as Listener ;
18
18
#[cfg(windows)]
19
- use ssh_agent_lib::agent::NamedPipeListener;
19
+ use ssh_agent_lib::agent::NamedPipeListener as Listener ;
20
20
21
21
use ssh_agent_lib::agent::{Session, Agent};
22
22
use ssh_agent_lib::proto::message::Message;
@@ -43,19 +43,15 @@ impl Session for MyAgent {
43
43
}
44
44
45
45
#[tokio::main]
46
- #[cfg(not(windows))]
47
46
async fn main() -> Result<(), Box<dyn std::error::Error>> {
47
+ #[cfg(not(windows))]
48
48
let socket = "ssh-agent.sock";
49
- let _ = std::fs::remove_file(socket); // remove the socket if exists
49
+ #[cfg(windows)]
50
+ let socket = r"\\.\pipe\agent";
50
51
51
- MyAgent.listen(UnixListener::bind(socket)?).await?;
52
- Ok(())
53
- }
52
+ let _ = std::fs::remove_file(socket); // remove the socket if exists
54
53
55
- #[tokio::main]
56
- #[cfg(windows)]
57
- async fn main() -> Result<(), Box<dyn std::error::Error>> {
58
- MyAgent.listen(NamedPipeListener::new(r"\\.\pipe\agent".into())?).await?;
54
+ MyAgent.listen(Listener::bind(socket)?).await?;
59
55
Ok(())
60
56
}
61
57
```
Original file line number Diff line number Diff line change 1
1
use async_trait:: async_trait;
2
2
use log:: info;
3
3
#[ cfg( windows) ]
4
- use ssh_agent_lib:: agent:: NamedPipeListener ;
4
+ use ssh_agent_lib:: agent:: NamedPipeListener as Listener ;
5
5
use ssh_agent_lib:: proto:: extension:: SessionBind ;
6
6
#[ cfg( not( windows) ) ]
7
- use tokio:: net:: UnixListener ;
7
+ use tokio:: net:: UnixListener as Listener ;
8
8
9
9
use ssh_agent_lib:: agent:: { Agent , Session } ;
10
10
use ssh_agent_lib:: proto:: message:: { self , Message , SignRequest } ;
@@ -221,26 +221,22 @@ impl Agent for KeyStorageAgent {
221
221
}
222
222
223
223
#[ tokio:: main]
224
- #[ cfg( not( windows) ) ]
225
224
async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
226
225
env_logger:: init ( ) ;
226
+
227
+ #[ cfg( not( windows) ) ]
227
228
let socket = "ssh-agent.sock" ;
228
- let _ = std:: fs:: remove_file ( socket) ; // remove the socket if exists
229
+ #[ cfg( windows) ]
230
+ let socket = r"\\.\pipe\agent" ;
229
231
230
- KeyStorageAgent :: new ( )
231
- . listen ( UnixListener :: bind ( socket) ?)
232
- . await ?;
233
- Ok ( ( ) )
234
- }
232
+ let _ = std:: fs:: remove_file ( socket) ; // remove the socket if exists
235
233
236
- #[ tokio:: main]
237
- #[ cfg( windows) ]
238
- async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
239
234
// This is only used for integration tests on Windows:
235
+ #[ cfg( windows) ]
240
236
std:: fs:: File :: create ( "server-started" ) ?;
241
- // ^ You can remove this line
237
+
242
238
KeyStorageAgent :: new ( )
243
- . listen ( NamedPipeListener :: new ( r"\\.\pipe\agent" . into ( ) ) ?)
239
+ . listen ( Listener :: bind ( socket ) ?)
244
240
. await ?;
245
241
Ok ( ( ) )
246
242
}
Original file line number Diff line number Diff line change @@ -92,7 +92,8 @@ pub struct NamedPipeListener(NamedPipeServer, std::ffi::OsString);
92
92
93
93
#[ cfg( windows) ]
94
94
impl NamedPipeListener {
95
- pub fn new ( pipe : std:: ffi:: OsString ) -> std:: io:: Result < Self > {
95
+ pub fn bind ( pipe : impl Into < std:: ffi:: OsString > ) -> std:: io:: Result < Self > {
96
+ let pipe = pipe. into ( ) ;
96
97
Ok ( NamedPipeListener (
97
98
ServerOptions :: new ( )
98
99
. first_pipe_instance ( true )
@@ -185,7 +186,7 @@ pub trait Agent: 'static + Sync + Send + Sized {
185
186
}
186
187
#[ cfg( windows) ]
187
188
service_binding:: Listener :: NamedPipe ( pipe) => {
188
- self . listen ( NamedPipeListener :: new ( pipe) ?) . await
189
+ self . listen ( NamedPipeListener :: bind ( pipe) ?) . await
189
190
}
190
191
#[ cfg( not( windows) ) ]
191
192
service_binding:: Listener :: NamedPipe ( _) => Err ( AgentError :: IO ( std:: io:: Error :: other (
You can’t perform that action at this time.
0 commit comments