Confuso sobre E / S sem bloqueio OpenSSL
Em geral, a biblioteca OpenSSL (C API) parece oferecer duas maneiras de fazer tudo: você pode usar soquetes simples do sistema configurados ao seu gosto ou usar o OpenSSLBIO
bjetos que são como fluxos parecido
No entanto, muitas vezes estou confuso com algumas das funcionalidades duplicadas. Por exemplo, como você faz uma conexão SSL sem bloqueio? Uma maneira parece ser simplesmente acessar o descritor de arquivo subjacente e configurá-lo para não-bloqueio usandofcntl
. Mas há também uma função da API OpenSSL chamadaBIO_set_nbio
que recebe umBIO*
objeto e define-o para o modo sem bloquei
Então, qual é a melhor maneira de configurar um soquete SSL sem bloqueio? O que acontece se você passar ao OpenSSL um descritor de arquivo nativo que éj definido para o modo sem bloqueio viafnctl
? Você ainda precisa ligar especificamente paraBIO_set_nbio
para tornar oBIO
objeto sem bloqueio?