summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorWez Furlong <wez@wezfurlong.org>2019-08-01 09:05:26 -0700
committerWez Furlong <wez@wezfurlong.org>2019-08-01 09:05:26 -0700
commitcab5f0fc9f217a577ad7614e5539e0d0315279b1 (patch)
tree5f3382e3f07ea45189f05062376e1194212a715f /tests
parentba6b5eddcf5bc93ca6f0475e76e157e3bdda6b64 (diff)
downloadssh2-rs-cab5f0fc9f217a577ad7614e5539e0d0315279b1.zip
move tcpstream assignment to its own function
The recent move to take ownership of TcpStream exposed an issue with the `handshake` method: if the stream is non-blocking then it may take several attempts to handshake, but only the first one is able to transfer ownership. My initial thought was just to make the TcpStream a required parameter to `new`, but we have some tests that work with known hosts and the ssh agent that don't require a tcpstream. I'm going to review those and see if there is a cleaner overall solution, but that will likely require more substantial API changes. For now, the simplest change is to add a separate `set_tcp_stream` function to make the stream ownership transfer explicit and distinct from the handshake. Refs: https://github.com/alexcrichton/ssh2-rs/issues/17
Diffstat (limited to 'tests')
-rw-r--r--tests/all/main.rs3
-rw-r--r--tests/all/session.rs6
2 files changed, 6 insertions, 3 deletions
diff --git a/tests/all/main.rs b/tests/all/main.rs
index 75f2a29..a021b4c 100644
--- a/tests/all/main.rs
+++ b/tests/all/main.rs
@@ -23,7 +23,8 @@ pub fn authed_session() -> ssh2::Session {
let user = env::var("USER").unwrap();
let socket = socket();
let mut sess = ssh2::Session::new().unwrap();
- sess.handshake(socket).unwrap();
+ sess.set_tcp_stream(socket);
+ sess.handshake().unwrap();
assert!(!sess.authenticated());
{
diff --git a/tests/all/session.rs b/tests/all/session.rs
index 5e45d53..cf64f1d 100644
--- a/tests/all/session.rs
+++ b/tests/all/session.rs
@@ -30,7 +30,8 @@ fn smoke_handshake() {
let user = env::var("USER").unwrap();
let socket = ::socket();
let mut sess = Session::new().unwrap();
- sess.handshake(socket).unwrap();
+ sess.set_tcp_stream(socket);
+ sess.handshake().unwrap();
sess.host_key().unwrap();
let methods = sess.auth_methods(&user).unwrap();
assert!(methods.contains("publickey"), "{}", methods);
@@ -52,7 +53,8 @@ fn keyboard_interactive() {
let user = env::var("USER").unwrap();
let socket = ::socket();
let mut sess = Session::new().unwrap();
- sess.handshake(socket).unwrap();
+ sess.set_tcp_stream(socket);
+ sess.handshake().unwrap();
sess.host_key().unwrap();
let methods = sess.auth_methods(&user).unwrap();
assert!(methods.contains("keyboard-interactive"), "{}", methods);