El Proyecto GNU ha publicado libmicrohttpd 0.9.77, una API sencilla para integrar la funcionalidad de un servidor HTTP en las 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+. Una vez compilada, la biblioteca ocupa aproximadamente 32 KB.
La biblioteca admite el protocolo HTTP 1.1, TLS, procesamiento incremental de solicitudes POST, autenticación básica y resumida, IPv6, SHOUTcast, varios métodos de multiplexación de conexiones (select, poll, epoll) y modelos de subprocesos múltiples (por ejemplo, puede usar un grupo de subprocesos o un hilo por conexión). Para reducir la sobrecarga incurrida al cambiar de contexto entre el kernel y el espacio de usuario, la cantidad de llamadas al sistema durante la operación se mantiene al mínimo.
Los cambios más notables:
- La API ofrece 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).
- El formulario recomendado en el RFC contiene los identificadores de los algoritmos utilizados para la autenticación implícita (“MD5” / “SHA-256” en lugar de “md5” / “sha-256”).
- Se reescribió el código para decodificar bloques en formato Base64 y se fortaleció la verificación de la exactitud de los datos de entrada en formato Base64.
- Configuración de compilación cruzada mejorada, mayor compatibilidad con POSIX y nuevas versiones de compiladores.
- Se agregaron pruebas internas para verificar la decodificación Base64, la autenticación básica y los encabezados HTTP largos colapsados.
- Las pruebas utilizan la API libcurl actualizada para ocultar advertencias sobre el uso de llamadas obsoletas.
- Se agregó la capacidad de usar compiladores VC (Visual C) al compilar sistemas ARM y ARM64.
- Cualquier valor negativo devuelto por una llamada de devolución de llamada ahora se trata como error (anteriormente, los valores negativos, excepto los códigos de error predefinidos, podían provocar un comportamiento indefinido).
- Se agregó procesamiento de la macro del preprocesador "DEBUG" (el controlador es idéntico a la macro "_DEBUG").
- Errores acumulados corregidos.
Fuente: opennet.ru
