Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

300
Vistas
¿Cómo obtengo un servidor OpenSSL que usa el bloqueo de BIO para que se apague limpiamente?

En una aplicación de servidor más grande, tengo un hilo con un servidor OpenSSL básico que usa BIO en modo de bloqueo porque parecía la forma más sencilla. Mi código acepta un solo tipo de solicitud de un teléfono (Android o iOS, y no estoy escribiendo ese código) y devuelve una cadena hexadecimal envuelta en HTML básico (que describe parte del estado de mi servidor). Opté por SSL y un servidor psuedo-HTTPS porque eso facilita las cosas para el desarrollador del teléfono. Si hay algo en la solicitud que el servidor no entiende, devuelvo un 404. Todo esto funciona.

El problema : cuando mi servidor se apaga, este hilo no se cierra debido al bloqueo de la llamada BIO_do_accept.

Probé BIO_get_fd() y setsockopt() para poner un tiempo de espera en el socket subyacente, pero aún se bloquea. De manera algo preocupante, SSL_state () permanece en "antes de/aceptar la inicialización", pero repetir eso obviamente no funcionará.

Supongo que otras personas tienen un código de servidor como este, y esos servidores pueden cerrarse correctamente. ¿Cómo lo hacen? ¿Hay alguna forma de que otro subproceso rompa ese bloque y obtenga la llamada de aceptación para regresar con un error? ¿O tengo que abandonar la idea de bloquear llamadas y pasar por la aparentemente horrible versión sin bloqueo ?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Cuando mi servidor se apaga, este hilo no se cierra debido a la llamada de bloqueo BIO_do_accept.

Para detener el bloqueo, cierre el zócalo asociado. Volverá inmediatamente.

Realice el apagado desde su controlador de señal.

No haga nada más en el controlador de señales con respecto a OpenSSL porque no es seguro para señales asíncronas. Deje que el hilo principal se limpie una vez que su hilo de trabajo haya regresado. Consulte, por ejemplo, libcrypto Thread Safety .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda