Here is a little patch, I am not sure it's 100% ok, it does not resolve the
problem entirely, it only handles LIBSSH2_ERROR_SOCKET_DISCONNECT. Maybe just
returning "rc" would be better.
--------- Original Message ---------Subject: Re: libssh2_userauth_password
return value
From: Peter Stuge <[email protected]>
Date: 4/17/13 3:07 pm
To: [email protected]
[email protected] wrote:
> } else if (rc) {
> session->userauth_pswd_state = libssh2_NB_state_idle;
> return _libssh2_error(session, LIBSSH2_ERROR_TIMEOUT,
> "Would block waiting");
> }
>
> I think it should return the actual error from the transport layer
> and not a "general" LIBSSH2_ERROR_TIMEOUT error.
Could you send a patch to fix that? Thanks.
//Peter
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
--- src/userauth.c 2012-04-18 23:24:04.000000000 +0300
+++ src/userauth.new.c 2013-04-17 15:51:03.275687538 +0300
@@ -280,9 +280,15 @@
return _libssh2_error(session, LIBSSH2_ERROR_EAGAIN,
"Would block waiting");
} else if (rc) {
- session->userauth_pswd_state = libssh2_NB_state_idle;
- return _libssh2_error(session, LIBSSH2_ERROR_TIMEOUT,
- "Would block waiting");
+ if (rc == LIBSSH2_ERROR_SOCKET_DISCONNECT ) {
+ session->userauth_pswd_state = libssh2_NB_state_idle;
+ return _libssh2_error(session, LIBSSH2_ERROR_SOCKET_DISCONNECT,
+ "Connection closed by server");
+ } else {
+ session->userauth_pswd_state = libssh2_NB_state_idle;
+ return _libssh2_error(session, LIBSSH2_ERROR_TIMEOUT,
+ "Would block waiting");
+ }
}
if (session->userauth_pswd_data[0] == SSH_MSG_USERAUTH_SUCCESS) {
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel