Ошибка libssh bind_accept: не удалось создать BIO

Я работаю в команде, разрабатывающей программное обеспечение, включающее SSH с архитектурой клиент-сервер. Я пишу SSH-сервер, тестируя его на локальной машине перед развертыванием на удаленном сервере, используя C API libssh. Сервер строится и связывается нормально, но при запуске в функции принятия возникает ошибка Не удалось создать BIO. Ниже мой код сервера

unsigned int port = xxxx;
int log_func = SSH_LOG_PROTOCOL;
int rc;
static const char * dsakey = "rservd_dsa_file_key";
static const char * rsakey = "rservd_rsa_file_key";


ssh_init();
ssh_bind sshbind = ssh_bind_new();
ssh_session session = ssh_new();

const char * hostname = "127.0.0.1";


ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDADDR, hostname);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDPORT, &port);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_DSAKEY, dsakey);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY, &log_func);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_RSAKEY, rsakey);


if(ssh_bind_listen(sshbind)<0)
{
    fprintf(stderr, "failed to listen at port %s\n", ssh_get_error(sshbind));
    exit(-1);
}


rc = ssh_bind_accept(sshbind, session);

if(rc == SSH_ERROR)
{
    fprintf(stderr, "Error in accepting a connection : %s\n", ssh_get_error(sshbind));
    exit(-1);
}

ssh_bind_free(sshbind);
ssh_free(session);

Погуглив, я узнал, что BIO как-то связан с SSL, но я не очень в этом уверен. Сообщество libssh не такое большое, поэтому примеров очень мало и они не такие понятные, как хотелось бы. Итак, что может быть причиной этой ошибки и что я могу сделать, чтобы исправить это? К вашему сведению, это libssh 0.5.0


person Kimutai    schedule 16.03.2015    source источник


Ответы (1)


Я исправил это, просто обновив libssh до 0.6.3, соединения работали нормально

person Kimutai    schedule 01.04.2015