El proyecto GNU ha publicado la versión de la biblioteca libmicrohttpd 0.9.77, que proporciona una API sencilla para integrar la funcionalidad de un servidor HTTP en aplicaciones. Las plataformas compatibles incluyen: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 y z/OS. La biblioteca se distribuye bajo la licencia LGPL 2.1+. En su versión compilada, la biblioteca ocupa aproximadamente 32 KB.
La biblioteca admite el protocolo HTTP 1.1, TLS, el procesamiento incremental de solicitudes POST, autenticación básica y digest, IPv6, SHOUTcast, diversos métodos de multiplexión de conexiones (select, poll, epoll) y modelos de multihilo (por ejemplo, se puede usar un grupo de hilos o un hilo por conexión). Para reducir la sobrecarga que surge al cambiar entre el núcleo y el espacio de usuario, el número de llamadas al sistema durante el funcionamiento se ha minimizado.
Los cambios más notables:
- En la API se ha introducido una nueva función MHD_get_version_bin() para obtener información sobre la versión de la biblioteca en un formato empaquetado (por ejemplo, 0x00097701).
- Para la forma recomendada en el RFC, se han proporcionado identificadores de algoritmos utilizados para la autenticación digest («MD5» / «SHA-256» en lugar de «md5» / «sha-256»).
- Se ha reescrito el código de decodificación de bloques en formato Base64, mejorando la verificación de la validez de los datos de entrada en formato Base64.
- Se ha mejorado la configuración de la compilación cruzada, aumentando la compatibilidad con POSIX y nuevas versiones de compiladores.
- Se han añadido pruebas internas para verificar la decodificación de Base64, Basic Auth y encabezados HTTP largos comprimidos.
- Las pruebas han utilizado la API actualizada de la biblioteca libcurl para ocultar advertencias sobre el uso de llamadas obsoletas.
- Se ha añadido la posibilidad de utilizar compiladores VC (Visual C) al compilar para sistemas ARM y ARM64.
- Cualquier valor negativo devuelto por una llamada de callback ahora se considera un error (anteriormente, valores negativos, excepto códigos de error predefinidos, podían llevar a un comportamiento indefinido).
- Se ha agregado el procesamiento del macro del preprocesador «DEBUG» (el controlador es idéntico al macro «_DEBUG»).
- Se han corregido errores acumulados.
Fuente: opennet.ru
