Das GNU-Projekt hat die Version 0.9.74 der Bibliothek libmicrohttpd veröffentlicht, die eine einfache API zur Integration der HTTP-Server-Funktionalität in Anwendungen bereitstellt. Die Bibliothek unterstützt das HTTP-Protokoll 1.1, TLS, inkrementelle Verarbeitung von POST-Anfragen, Basis- und Digest-Authentifizierung, IPv6, SHOUTcast sowie verschiedene Methoden zur Multiplexierung von Verbindungen (select, poll, pthread, thread pool). Unterstützte Plattformen sind: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, macOS, Win32, Symbian und z/OS. Die Bibliothek wird unter der LGPL 2.1+-Lizenz verteilt.
In der neuen Version:
- Eine experimentelle Implementierung des WebSocket-Protokolls wurde hinzugefügt, die derzeit nicht ausreichend getestet ist und standardmäßig deaktiviert ist.
- Die Übereinstimmung mit den Spezifikationen der Implementierungen der Protokolle HTTP 1.0/1.1 wurde verbessert.
- Der Code zur Dekodierung von Chunked-Anfragen wurde überarbeitet.
- Der Code zur Erstellung von HTTP-Headern bei Antworten wurde vollständig neu geschrieben.
- Es wurde Code hinzugefügt, um automatisch Fehler im Zusammenhang mit ungültigen Chunked-Anfragen, zu großen Datenmengen und einer falschen Festlegung des Content-Length-Headers zurückzugeben.
- Die Genauigkeit der Timeout-Zuweisung wurde von Sekunden auf Millisekunden erhöht.
- Interne Optimierungen wurden durchgeführt, zum Beispiel verbessertes Speichermanagement, erhöhte Effizienz der Hash-Funktion, und die wiederholte Analyse der Protokollversion und Methode HTTP wurde ausgeschlossen.
- Eine genauere Überprüfung der Gültigkeit von HTTP-Headerwerten wurde sichergestellt; die Verwendung von Tabulatoren in den Werten von Antwort-Headern ist erlaubt, allerdings ist die Verwendung von Leerzeichen in benutzerdefinierten Headerwerten untersagt.
- Eine Build-Option ‚—enable-sanitizers[=address,undefined,leak,user-poison]‘ wurde hinzugefügt, um die selektive Aktivierung von Fehlererkennungsmodi im Code zu ermöglichen.
- Eine Projektdatei für den Build in MSVC wurde hinzugefügt.
Quelle: opennet.ru
