Le projet GNU a publié la version de la bibliothèque libmicrohttpd 0.9.74, qui représente une API simple pour intégrer des fonctionnalités de serveur HTTP dans les applications. La bibliothèque prend en charge le protocole HTTP 1.1, TLS, le traitement incrémental des requêtes POST, l'authentification basic et digest, IPv6, SHOUTcast et divers méthodes de multiplexage des connexions (select, poll, pthread, thread pool). Les plateformes prises en charge incluent : GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, macOS, Win32, Symbian et z/OS. La bibliothèque est distribuée sous la licence LGPL 2.1+.
Dans la nouvelle version :
- Une mise en œuvre expérimentale du protocole WebSockets a été ajoutée, qui n'est pas encore suffisamment testée et est désactivée par défaut.
- La conformité aux spécifications des implémentations des protocoles HTTP 1.0/1.1 a été améliorée.
- Le code pour le décodage des requêtes chunked a été retravaillé.
- Le code de formation des en-têtes HTTP lors de la réponse a été complètement réécrit.
- Du code a été ajouté pour le retour automatique des erreurs liées aux requêtes chunked incorrectes, à une taille de données trop grande et à un en-tête Content-Length mal défini.
- La précision des délais d'attente a été améliorée, passant de secondes à millisecondes.
- Des optimisations internes ont été réalisées, par exemple, la gestion de la mémoire a été améliorée, l'efficacité du hachage a été augmentée et l'analyse répétée de la version du protocole et de la méthode HTTP a été supprimée.
- Une vérification plus stricte de la validité des valeurs des en-têtes HTTP a été assurée, l'utilisation du caractère de tabulation dans les valeurs des en-têtes de réponse est autorisée, mais l'utilisation d'espaces dans les valeurs des en-têtes personnalisés est interdite.
- Une option d'assemblage ‘—enable-sanitizers[=address,undefined,leak,user-poison]’ a été ajoutée pour activer sélectivement les modes de détection des problèmes dans le code.
- Un fichier de projet pour la compilation sous MSVC a été ajouté.
Source : opennet.ru
