On 11.04.2018 17:31, Andreas Schneider wrote:
> On Wednesday, 11 April 2018 16:27:16 CEST g4-l...@tonarchiv.ch wrote:
>> Hello all
>>
>> I realized that SSH servers with the keep-alive option enabled first
>> send the keep-alive _global_ request as long as nothing had connected to
>> the local TCP socket:
>>
>> $> ssh -v -N xxx@yyy -L 8088:testcom.com:80
>>
>>     debug1: client_input_global_request: rtype keepal...@openssh.com
>> want_reply 1
>>
>> After connecting to localhost:8088, these requests are sent over the
>> channel:
>>
>>     debug1: client_input_channel_req: channel 2 rtype
>> keepal...@openssh.com reply 1
>>
>> From this I conclude that the channel should not be opened before there
>> is a waiting connection on the local TCP socket.
>> But how do I tell libssh to work on the global request as long as there
>> is no open channel?
>>
>> Maybe I have to use ssh_get_fd() and the use select() also on this
>> socket while waiting for the local incoming connections? And then use
>> ssh_set_fd_toread()?
>>
>> I would appreciate a lot if someone could show me some sample code.
> I think that ssh_event_dopoll() will handle it and call the appropriate 
> callback. Don't use ssh_select()
>
> In master we have the new connector API which is easier to use, see
> https://git.libssh.org/projects/libssh.git/tree/examples/ssh_client.c
>
Thanks, I think that's the issue: The main event polling is not called
why my code waits for a connection. But how do I get the event to which
are attached the default handlers of libssh?

I also looked at the sample code which uses the event API for polling on
the channel. But this would not solve my issue with global keep-alive
requests. They are sent while no channel exists. IMHO it's an issue with
handling messages in the main loop while no channels are open.

Best regards,
Till


Reply via email to