[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CHUNKSIZE in connector.c


On Thursday, July 18, 2019 6:49:39 PM CEST Chris Townsend wrote:
> Hi!

Hi Chris,

> In the Multipass project [1], we use an ssh client implementation
> similar to the ssh_client example where connectors are used.  We are
> running into an issue where if a ssh_channel_request_exec() is called
> via the client, that the client can "hang" if it is receiving large
> amounts of data.
> 
> I narrowed this issue down to ssh_connector_fd_out_cb() and the
> ssh_channel_read_nonblocking() call.  Whenever there is more data to be
> read than CHUNKSIZE (which is 4096 bytes), then there is no way for the
> code to go back and read more data on the particular event.  I found
> that increasing CHUNKSIZE to 65536 bytes keeps the issue from
> occurring.  This allows the buffer to be larger than the TCP max buffer
> size and so all data in the packet will be accounted for.
> 
> I would like to propose increasing CHUNKSIZE to 65536, but I'm not sure
> if there is some legacy reason why it's so small or if there is perhaps
> a better way of handling more than 4096 bytes of data to be read on the
> socket.  Also, increasing CHUNKSIZE should increase performance some
> since everything can be read at once and not have to loop through to try
> to see if more data is available.

The channel max packet size is 32768 so I think it shouldn't be bigger than 
that. However doesn't that just hide the problem? I think we should read more 
than once ...


	Andreas


-- 
Andreas Schneider                 asn@xxxxxxxxxxxxxx
GPG-ID:     8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D



Follow-Ups:
Re: CHUNKSIZE in connector.cChris Townsend <Christopher.Townsend@xxxxxxxxxxxxx>
References:
CHUNKSIZE in connector.cChris Townsend <Christopher.Townsend@xxxxxxxxxxxxx>
Archive administrator: postmaster@lists.cynapses.org