Здравствуйте!
Пишу простенький почтовый клиент POP3s на c++ с использованием библиотеки openssl.
При написании столкнулся со следующей проблемой: после создания ssl подключения к серверу (например, pop.mail.ru или pop.google.com с 995 портом) и получении подтверждения, не получается отправить следующую команду(например, user ) и принять ответ с сервера. После отправки данных функцией SSL_write, программа завершает выполнение с кодом 0 через минуту. В чем может быть проблема?
void communicateWithPOP(const int sock, const argValues* values){
int bytes;
string reply ;
char buf[2048];
SSL_CTX *ctx;
SSL* ssl;
SSL_library_init();
ctx = InitCTX();
ssl = SSL_new(ctx);
SSL_set_fd(ssl, sock);
SSL_CTX_set_default_verify_paths(ctx);
if(SSL_connect(ssl) == -1)
ERR_print_errors_fp(stderr);
else{
string nameReq = "user usr";
bytes = SSL_read(ssl,buf,sizeof(buf));
buf[bytes] = 0;
cout << "[CONNECTION] : "<< buf << endl;
memset(buf,0, sizeof(buf));
int sslwRet = SSL_write(ssl, nameReq.c_str(), strlen(nameReq.c_str()));
cout << "SSL_write ret : " << sslwRet << endl;
bytes = SSL_read(ssl, buf, sizeof(buf));
cout << "SSL_read ret : " << bytes << endl;
SSL_free(ssl);
}
close(sock);
SSL_CTX_free(ctx);
}