Subject: Re: [libssh2] meaning of -37 "Failed getting banner" / "Unable to exchange encryption keys" /

Re: [libssh2] meaning of -37 "Failed getting banner" / "Unable to exchange encryption keys" /

From: TJ Saunders <tj_at_castaglia.org>
Date: Wed, 25 Apr 2012 13:09:40 -0700 (PDT)

> [libssh2] 0.953586 Socket: Error recving 1 bytes: 11
> [libssh2] 0.953603 Failure Event: -37 - Failed getting banner
> Main: TIMEOUT

The "Error recving 1 bytes: 11" message comes from this code in
src/session.c:

  _libssh2_debug(session, LIBSSH2_TRACE_SOCKET,
     "Error recving %d bytes: %d", 1, errno);

which means that that 11 is the errno value on your system. (On my Ubuntu
Linux machine, errno 11 is EGAIN. Arguably, that error message could be
made more legible using strerror(), e.g.:

  _libssh2_debug(session, LIBSSH2_TRACE_SOCKET,
     "Error recving %d bytes: [%d] %s", 1, errno, strerror(errno));

The -37 value is defined in the <libssh2.h> header file:

  #define LIBSSH2_ERROR_EAGAIN -37

indicating that the calling code should try the call again. So the error
could be transient (e.g. your socket is non-blocking, and there simply
wasn't data to be read yet on the socket when you called). In fact, you
see evidence of this in your second trace:

> = = = = = = = = = = = = = = = = =
> Failure Event: -37 - Failed getting banner
> - - - - - - - - - - - - - - - - - -
> [libssh2] 0.299932 Transport: session_startup for socket 3
> [libssh2] 0.299979 Transport: Sending Banner: SSH-2.0-OpenSSH_5.4
> [libssh2] 0.300057 Socket: Sent 21/21 bytes at 0x1ffb630+0
> [libssh2] 0.300118 Socket: Error recving 1 bytes: 11
> [libssh2] 0.300149 Failure Event: -37 - Failed getting banner
> [libssh2] 0.307140 Socket: Recved 1 bytes banner

Here we see the "-37 - Failed getting banner", but then it is followed by
reading the bytes for the banner, one at a time:

> [libssh2] 0.307161 Socket: Recved 1 bytes banner
> [libssh2] 0.307168 Socket: Recved 1 bytes banner
> [libssh2] 0.307174 Socket: Recved 1 bytes banner
> [libssh2] 0.307179 Socket: Recved 1 bytes banner
> [libssh2] 0.307184 Socket: Recved 1 bytes banner
> [libssh2] 0.307189 Socket: Recved 1 bytes banner
> [libssh2] 0.307195 Socket: Recved 1 bytes banner
> [libssh2] 0.307200 Socket: Recved 1 bytes banner
> [libssh2] 0.307205 Socket: Recved 1 bytes banner
> [libssh2] 0.307210 Socket: Recved 1 bytes banner
> [libssh2] 0.307215 Socket: Recved 1 bytes banner
> [libssh2] 0.307220 Socket: Recved 1 bytes banner
> [libssh2] 0.307226 Socket: Recved 1 bytes banner
> [libssh2] 0.307231 Socket: Recved 1 bytes banner
> [libssh2] 0.307236 Socket: Recved 1 bytes banner
> [libssh2] 0.307241 Socket: Recved 1 bytes banner
> [libssh2] 0.307246 Socket: Recved 1 bytes banner
> [libssh2] 0.307251 Socket: Recved 1 bytes banner
> [libssh2] 0.307257 Socket: Recved 1 bytes banner
> [libssh2] 0.307263 Socket: Recved 1 bytes banner
> [libssh2] 0.307273 Transport: Received Banner: SSH-2.0-OpenSSH_5.8

And again here, as part of the key exchange:

> [libssh2] 0.307979 Transport: Looking for packet of type: 20
> [libssh2] 0.307988 Failure Event: -37 - Unable to exchange encryption keys
> [libssh2] 0.308285 Socket: Recved 856/16384 bytes to 0x1fea5f8+0

<snip>

> [libssh2] 0.309464 Transport: Packet type 20 received, length=846
> [libssh2] 0.309474 Transport: Looking for packet of type: 20

So the looked-for packet of type 20 was found.

Hope this helps shed some light on things,
TJ

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   We can understand one another; but each of us is able to
   interpret himself to himself alone.

     -Hermann Hesse

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
Received on 2012-04-25