ssh_channel_open_forward无阻塞

时间:2014-06-04 04:52:09

标签: c ssh libssh

我正在尝试用libssh实现ssh客户端。

根据libssh doc:http://api.libssh.org/stable/group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b ssh_channel_open_forward支持无阻止模式。

这是我的序列:

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。它完全被封锁了。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

这是我的错。我查看了libssh的主人。并在Linux和win32上重建它。这个问题已得到解决。