ssh_channel_open_forward нет блокировки
Я пытаюсь реализовать клиент SSH с libssh.
Согласно документу libssh: http://api.libssh.org/stable/group__libssh__channel.html 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 ответ
Это моя вина. Я проверяю мастера libssh. И перестройте его на Linux и win32. Эта проблема была исправлена.