From 712c6cbdd2f1b509f586aea5889a5c1deb7c9bda Mon Sep 17 00:00:00 2001 From: Kamil Dudka <kdudka@redhat.com> Date: Mon, 9 Oct 2017 17:35:51 +0200 Subject: [PATCH] session: avoid printing misleading debug messages ... while throwing LIBSSH2_ERROR_EAGAIN out of session_startup() If the session runs in blocking mode, LIBSSH2_ERROR_EAGAIN never reaches the libssh2 API boundary and, in non-blocking mode, these messages are suppressed by the condition in _libssh2_error_flags() anyway. Closes #211 --- src/session.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/session.c b/src/session.c index 6352d12ee7..381efb2dc9 100644 --- a/src/session.c +++ b/src/session.c @@ -703,7 +703,9 @@ session_startup(LIBSSH2_SESSION *session, libssh2_socket_t sock) if (session->startup_state == libssh2_NB_state_created) { rc = banner_send(session); - if (rc) { + if (rc == LIBSSH2_ERROR_EAGAIN) + return rc; + else if (rc) { return _libssh2_error(session, rc, "Failed sending banner"); } @@ -714,7 +716,9 @@ session_startup(LIBSSH2_SESSION *session, libssh2_socket_t sock) if (session->startup_state == libssh2_NB_state_sent) { do { rc = banner_receive(session); - if (rc) + if (rc == LIBSSH2_ERROR_EAGAIN) + return rc; + else if (rc) return _libssh2_error(session, rc, "Failed getting banner"); } while(strncmp("SSH-", (char *)session->remote.banner, 4)); @@ -724,7 +728,9 @@ session_startup(LIBSSH2_SESSION *session, libssh2_socket_t sock) if (session->startup_state == libssh2_NB_state_sent1) { rc = _libssh2_kex_exchange(session, 0, &session->startup_key_state); - if (rc) + if (rc == LIBSSH2_ERROR_EAGAIN) + return rc; + else if (rc) return _libssh2_error(session, rc, "Unable to exchange encryption keys"); @@ -749,7 +755,9 @@ session_startup(LIBSSH2_SESSION *session, libssh2_socket_t sock) rc = _libssh2_transport_send(session, session->startup_service, sizeof("ssh-userauth") + 5 - 1, NULL, 0); - if (rc) { + if (rc == LIBSSH2_ERROR_EAGAIN) + return rc; + else if (rc) { return _libssh2_error(session, rc, "Unable to ask for ssh-userauth service"); }