Het GNU-project heeft de release van de libmicrohttpd bibliotheek 0.9.77 gepubliceerd, die een eenvoudige API biedt voor het integreren van HTTP-serverfunctionaliteit in applicaties. Ondersteunde platforms zijn: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 en z/OS. De bibliotheek wordt verspreid onder de LGPL 2.1+ licentie. In gecompileerde vorm neemt de bibliotheek ongeveer 32 KB in beslag.
De bibliotheek ondersteunt het HTTP protocol 1.1, TLS, incrementele verwerking van POST-verzoeken, basis- en digest-authenticatie, IPv6, SHOUTcast, verschillende methoden voor multiplexing van verbindingen (select, poll, epoll) en threadingmodellen (bijvoorbeeld, een thread pool of één thread per verbinding). Om de overhead bij contextwisselingen tussen de kernel en de gebruikersruimte te verminderen, is het aantal systeemaanroepen tijdens de werking tot een minimum beperkt.
De meest opvallende wijzigingen:
- De API biedt een nieuwe functie MHD_get_version_bin() voor het verkrijgen van versie-informatie van de bibliotheek in een verpakt formaat (bijvoorbeeld, 0x00097701).
- In de vorm die wordt aanbevolen in de RFC, zijn de identificatoren van de algoritmen voor digest-authenticatie vermeld (‘MD5’ / ‘SHA-256’ in plaats van ‘md5’ / ‘sha-256’).
- De code voor het decoderen van blokken in Base64-formaat is herschreven, en de validatie van de invoer in Base64-formaat is aangescherpt.
- De configuratie voor cross-compilatie is verbeterd, en de compatibiliteit met POSIX en nieuwe versies van compilers is verhoogd.
- Interne tests zijn toegevoegd voor het controleren van de decodering van Base64, Basic Auth en ingekorte lange HTTP-headers.
- In de tests is de bijgewerkte API van de libcurl bibliotheek gebruikt om waarschuwingen over het gebruik van verouderde aanroepen te verbergen.
- Het is nu mogelijk om VC (Visual C) compilers te gebruiken bij het bouwen voor ARM en ARM64 systemen.
- Alle negatieve waarden die door een callback-aanroep worden geretourneerd, worden nu geïnterpreteerd als fouten (voorheen konden negatieve waarden, met uitzondering van vooraf gedefinieerde foutcodes, leiden tot onvoorspelbaar gedrag).
- Verwerking van de preprocessor macro 'DEBUG' is toegevoegd (de handler is identiek aan de macro '_DEBUG').
- Accumulerende fouten gecorrigeerd.
Bron: opennet.ru
