#233: libssh2 _libssh2_packet_add() in packet.c not responding properly to
SSH_MSG_CHANNEL_REQUEST for openssh keepalive
----------------------+--------------------
 Reporter:  engstrom  |       Owner:
     Type:  defect    |      Status:  new
 Priority:  normal    |   Milestone:  1.4.0
Component:  protocol  |     Version:  1.3.0
 Keywords:            |  Blocked By:
   Blocks:            |
----------------------+--------------------
 Line 750 of packet.c is handling case SSH_MSG_CHANNEL_REQUEST:

 When keepalives are configured on an OpenSSH sshd there is no want_reply
 being sent.  According to RFC 4254 a channel request has a default want
 reply of TRUE but line 754 of packet.c defaults the want reply to FALSE.
 I changing 754 from:

 unsigned char want_reply = 0;

 to:

 unsigned char want_reply = 1;

 Fixes the problem. Since the OpenSSH daemon is a very common ssh server
 then regardless of whether it's correctly interpreting the RFC the libssh2
 client library should support the way it send keepalives.


 Here's the section of the RFC dealing with channel requests - NOTE how it
 says "If 'want reply' is FALSE, no response will be sent to the request.
 Otherwise, the recipient responds with either SSH_MSG_CHANNEL_SUCCESS,
 SSH_MSG_CHANNEL_FAILURE, or request-specific continuation messages"
 implying that if the want reply isn't sent then the client should respond.
 :

 From 5.4. Channel-Specific Requests

 All channel-specific requests use the following format.

       byte      SSH_MSG_CHANNEL_REQUEST
       uint32    recipient channel
       string    request type in US-ASCII characters only
       boolean   want reply
       ....      type-specific data follows

    If 'want reply' is FALSE, no response will be sent to the request.
    Otherwise, the recipient responds with either
    SSH_MSG_CHANNEL_SUCCESS, SSH_MSG_CHANNEL_FAILURE, or request-specific
    continuation messages.  If the request is not recognized or is not
    supported for the channel, SSH_MSG_CHANNEL_FAILURE is returned.

-- 
Ticket URL: <http://trac.libssh2.org/ticket/233>
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