Das GNU-Projekt hat die Bibliothek libmicrohttpd 0.9.77 veröffentlicht, die eine einfache API zur Integration von HTTP-Serverfunktionen in Anwendungen bietet. UnterstĂŒtzte Plattformen sind: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 und z/OS. Die Bibliothek wird unter der LGPL 2.1+ Lizenz verteilt. Im kompilierten Zustand nimmt die Bibliothek etwa 32 KB ein.
Die Bibliothek unterstĂŒtzt das HTTP 1.1-Protokoll, TLS, inkrementelle Verarbeitung von POST-Anfragen, Basic- und Digest-Authentifizierung, IPv6, SHOUTcast, verschiedene Methoden zur Multiplexierung von Verbindungen (select, poll, epoll) und Multithreading-Modelle (z. B. kann ein Thread-Pool oder ein Thread pro Verbindung verwendet werden). Um den Overhead zu reduzieren, der durch den Kontextwechsel zwischen Kernel und Benutzerraum entsteht, wurde die Anzahl der Systemaufrufe wĂ€hrend des Betriebs auf ein Minimum reduziert.
Die auffĂ€lligsten Ănderungen:
- Im API wurde eine neue Funktion MHD_get_version_bin() hinzugefĂŒgt, um Informationen ĂŒber die Version der Bibliothek im kompakten Format (z. B. 0x00097701) zu erhalten.
- Den in der RFC empfohlenen Formaten wurden die Identifikatoren der Algorithmen fĂŒr die Digest-Authentifizierung (âMD5â / âSHA-256â anstelle von âmd5â / âsha-256â) hinzugefĂŒgt.
- Der Code zur Dekodierung von Blöcken im Base64-Format wurde neu geschrieben, die EingabewertprĂŒfung im Base64-Format wurde verstĂ€rkt.
- Die Konfiguration fĂŒr Cross-Compilation wurde verbessert, die KompatibilitĂ€t mit POSIX und neuen Compiler-Versionen erhöht.
- Interne Tests zur ĂberprĂŒfung der Base64-Dekodierung, der Basis-Authentifizierung und von eingerollten langen HTTP-Headern wurden hinzugefĂŒgt.
- In den Tests wurde die aktualisierte API der Bibliothek libcurl verwendet, um Warnungen ĂŒber die Verwendung veralteter Aufrufe zu unterdrĂŒcken.
- Die Möglichkeit, VC-Compiler (Visual C) beim Kompilieren fĂŒr ARM- und ARM64-Systeme zu verwenden, wurde hinzugefĂŒgt.
- Alle negativen Werte, die von einem Callback-Aufruf zurĂŒckgegeben werden, werden jetzt als Fehler betrachtet (frĂŒher konnten negative Werte, mit Ausnahme vordefinierter Fehlercodes, zu undefiniertem Verhalten fĂŒhren).
- Die Verarbeitung des PrĂ€prozessor-Makros âDEBUGâ wurde hinzugefĂŒgt (der Handler ist identisch mit dem Makro â_DEBUGâ).
- Es wurden kumulierte Fehler behoben.
Quelle: opennet.ru
