#218: libssh2_session_startup fails with certain ssh servers
---------------------+------------------------------------------------------
  Reporter:  mstrsn  |       Owner:       
      Type:  defect  |      Status:  new  
  Priority:  normal  |   Milestone:  1.2.9
 Component:  SFTP    |     Version:  1.2.8
  Keywords:  banner  |      Blocks:       
Blocked By:          |  
---------------------+------------------------------------------------------
 Using libssh2_session_startup() with one particular ssh server always
 fails with LIBSSH2_ERROR_BANNER_RECV. Debugging the problem, I learned
 that my client program does not receive the complete banner from the
 server before blocking. This is a problem, because the loop in
 session_startup() that calls banner_receive() resets banner_TxRx_state to
 libssh2_NB_state_idle within the loop, causing the first portion of the
 banner to be lost when banner_receive() tries to get the rest of the
 banner. The fix that works for me is to update session.c like this:

 {{{
 #!diff
 --- session.c.orig      Tue Apr 26 13:41:46 2011
 +++ session.c   Tue Apr 26 14:59:06 2011
 @@ -657,12 +657,11 @@
                                    "Failed sending banner");
          }
          session->startup_state = libssh2_NB_state_sent;
 +        session->banner_TxRx_state = libssh2_NB_state_idle;
      }

      if (session->startup_state == libssh2_NB_state_sent) {
          do {
 -            session->banner_TxRx_state = libssh2_NB_state_idle;
 -
              rc = banner_receive(session);
              if (rc)
                  return _libssh2_error(session, rc,
 }}}

 I am using Solaris 10 x386 with gcc 3.4.6. The ssh server is running on a
 Ruggedcom switch running ROS 3.8.1. The banner returned by this server is
 "SSH-2.0-Mocana SSH".

-- 
Ticket URL: <http://trac.libssh2.org/ticket/218>
libssh2 <http://trac.libssh2.org/>
C library for writing portable SSH2 clients

_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to