diff options
| author | Luka Perkov <luka.perkov@sartura.hr> | 2014-03-17 16:16:07 +0100 |
|---|---|---|
| committer | Andreas Schneider <asn@cryptomilk.org> | 2014-03-27 11:14:25 +0100 |
| commit | da0c77fdb1ed004f736a9c0b04023374e4020289 (patch) | |
| tree | 18887a8ad607dd389cb5ea88dcc9abc19442536e /src | |
| parent | 818c80baed9dc51fa7fc8aa249b185300ff39e20 (diff) | |
client: fix corner case when sockets are manually created
If the sockets are created manually and passed to libssh the internal session
state is set to SSH_SESSION_STATE_SOCKET_CONNECTED. Result of this fix can be
verified by running torture_connect test (torture_connect_socket) with -vvvv
flags.
Signed-off-by: Luka Perkov <luka.perkov@sartura.hr>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
(cherry picked from commit dbb2de272b57c7327204adb7b7bdef5c98bfbfd6)
Diffstat (limited to 'src')
| -rw-r--r-- | src/client.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/client.c b/src/client.c index cb41f1ce..ca6cf059 100644 --- a/src/client.c +++ b/src/client.c @@ -60,12 +60,15 @@ static void socket_callback_connected(int code, int errno_code, void *user){ ssh_session session=(ssh_session)user; - if(session->session_state != SSH_SESSION_STATE_CONNECTING){ + if (session->session_state != SSH_SESSION_STATE_CONNECTING && + session->session_state != SSH_SESSION_STATE_SOCKET_CONNECTED) + { ssh_set_error(session,SSH_FATAL, "Wrong state in socket_callback_connected : %d", session->session_state); return; } + SSH_LOG(SSH_LOG_RARE,"Socket connection callback: %d (%d)",code, errno_code); if(code == SSH_SOCKET_CONNECTED_OK) session->session_state=SSH_SESSION_STATE_SOCKET_CONNECTED; |
