0

libssh で ssh クライアントを実装しようとしています。

libssh doc によると: http://api.libssh.org/stable/group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b ssh_channel_open_forward は none ブロック モードをサポートしています。

これが私のシーケンスです:

1. ssh_new ()
2. ssh_set_blcoking (session, false)
3. ssh_connect ()                                      :None Blocking -> OK
4. ssh_userauth_password (session, NULL, "password")   :None Blocking -> OK
5. ssh_channel_new (session)
6. ssh_channel_set_blcoking (channel, 0)
7. ssh_channel_open_foward(...)                        :Bocking       -> NG

MaxOS(X) ssh_channel_open_foward 関数の同じコードがブロックされていないと確信しています。Linux (ubuntu) および Win32 (win7/xp) では、ssh_channel_open_foward がブロックされています。

また、テスト コードを追加します: assert (ssh_is_blocking (session_->session ()) == 0)。アサートは発生しません。つまり、チャネルはすでにブロックなしモードに切り替えられています。しかし、ssh_channel_open_foward は決して SSH_AGAIN を返しません。完全にブロックされています。

どんな助けでも非常に感謝します。

4

1 に答える 1