2012-08-06 16 views
10

cuando el servidor escrito en openssl no está llamando SSL_accept, bloques SSL_connect del cliente para siempre. Hay algunas funciones de tiempo de espera en openssl -SSL_CTX_set_timeout, SSL_SESSION_set_timeout pero estas no tienen efecto en SSL_connect.openssl ssl_connect blocks forever - cómo configurar el tiempo de espera?

¿Realmente no hay forma de configurar el tiempo de espera para SSL_connect cuando, p. ¿El servidor ssl tiene errores y entra en bucle antes de realizar el protocolo de enlace SSL?

Respuesta

10

La biblioteca de OpenSSL le ofrece la máxima flexibilidad en términos de manejo de problemas relacionados con el socket. Los bloques SSL_connect en su caso, ya que debe utilizarlo con un socket de bloqueo. Úselo con un zócalo no bloqueante, en cuyo caso volverá con un -1. Si llama a la función SSL_get_error que le dará el error SSL_ERROR_WANT_READ o SSL_ERROR_WANT_WRITE dependiendo de cuándo el tcp recv o send no puede completar la operación, respectivamente.

Cuando se obtiene SSL_ERROR_WANT_WRITE/SSL_ERROR_WANT_READ, debe llamar a la función de selección pasando el conector al fd_set apropiado y un tiempo de espera excedido. Si el tiempo de espera de selección finaliza, puede considerar que se agotó el tiempo de espera de su SSL_connect.

Nota: El SSL_SESSION_set_timeout se utiliza para establecer los valores de tiempo de espera de sesión que están vinculados a la reanudación de SSL. No tienen nada que ver con el tiempo de espera de una conexión.

Los enlaces siguientes le ayudarán (especialmente el segundo enlace, Sección 6, que habla de multiplexado I/O):

+0

:(recurso vinculado trasladó –

+0

Aquí hay algunos otros enlaces a esos archivos PDF: [part1] (http://vanets.vuse.vanderbilt.edu/dokuwiki/lib/exe/fetch.php?media=resource:part1.pdf), y [part2] (http: //vanets.vuse.vanderbilt.edu/dokuwiki/lib/exe/fetch.php?media=resource:part2.pdf). Ho pe esto ayuda! – Castaglia

Cuestiones relacionadas