Subject: [libssh2] #226: Server ID string missing

[libssh2] #226: Server ID string missing

From: libssh2 Trac <trac_at_libssh2.stuge.se>
Date: Tue, 06 Sep 2011 13:03:22 -0000

#226: Server ID string missing
--------------------------+-------------------------------------------------
  Reporter: dzejk | Owner:
      Type: enhancement | Status: new
  Priority: normal | Milestone: 1.3.0
 Component: API | Version: 1.2.8
  Keywords: server id | Blocks:
Blocked By: |
--------------------------+-------------------------------------------------
 Sometimes a user may be interested in server's ID ("remote banner"), for
 instance, some SSH servers don't support all functionality etc...

 In my opinion, the API should have a function that returns this server ID
 string. In fact this is very simple since it is stored in
 session->remote.banner.

 My implementation:
 Put the following anywhere in src/session.c:

 {{{
 /* libssh2_remote_banner_get
  * Get the remote banner (server ID string)
  */

 LIBSSH2_API const char*
 libssh2_remote_banner_get(LIBSSH2_SESSION* session)
 {
     /*
      Open question: if not set, can NULL be returned and the user should
 handle it?
      Open question: to introduce any checks if the session is established
                     (and the banner makes sense)?
     */

     /* to avoid a coredump when session is NULL */
     if ( NULL == session )
     {
         return NULL;
     }
     if ( NULL==session->remote.banner )
     {
         return NULL;
     }

     return (const char *) session->remote.banner;
 }
 }}}

 As long as this function is not used by other library functions, there is
 no need to declare it in src/session.h. It must be declared, however,
 anywhere in include/libssh2.h, so it is available to a client application:

 {{{
 LIBSSH2_API const char* libssh2_remote_banner_get(LIBSSH2_SESSION*
 session);
 }}}

 I have successfully built it on FreeBSD 8.2/i386 with libssh2 1.2.9.
 I have tested it connectiing to two SSH servers: OpenSSH and WinSSHD and
 received expected results: "SSH-2.0-OpenSSH_5.4p1 FreeBSD-20100308" and
 "SSH-2.0-1.09 FlowSsh: WinSSHD 5.23", respectively.

 When the function's name and its interface are finally agreed, its man
 page should be prepared as well. (BTW, IMHO both libssh2_banner_set and
 this function should be placed into "namespace" '''session''')

 PS: I wanted to choose version 1.2.9, but only 1.2.8. is available.

-- 
Ticket URL: <http://trac.libssh2.org/ticket/226>
libssh2 <http://trac.libssh2.org/>
C library for writing portable SSH2 clients
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel
Received on 2011-09-06