You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add binding for channel_open_request_auth_agent_callback
This callback is required for implementing ssh agent forward as unlike
X11 forward, there is no other way to establish a forwarding channel.
In libssh:
1. Callback is triggered while handling protocol packets in other libssh
call.
2. The callback creates a new channel and prepare for bidirectional
forwarding between it and ssh agent.
3. The callback then returns a borrow of the newly created channel for
libssh to make reply to the remote side.
However, the callback-based flow does not really fit our Rust binding
design: during callback we have SessionHolder locked, so it's really
hard to do anything without introducing lock re-entrancy issues, plus
that it demands us to return a temporary borrow of something owned by
Rust side whose lifetime is tricky to model.
Instead, we try to turn the callback-based style back to something
resembling `ssh_channel_accept_x11` by buffering pending channels and
let users fetch them later in a normal context.
0 commit comments