Das GNU-Projekt hat libmicrohttpd 0.9.77 veröffentlicht, eine einfache API zum Einbetten von HTTP-Serverfunktionen in Anwendungen. Unterstützte Plattformen sind unter anderem: GNU/LinuxFreeBSD, OpenBSD, NetBSD, Solaris, Android, macOSDie Bibliothek ist kompatibel mit Win32 und z/OS und wird unter der LGPL 2.1+ Lizenz vertrieben. Die kompilierte Bibliothek hat eine Größe von ca. 32 KB.
Die Bibliothek unterstützt HTTP 1.1, TLS, inkrementelle Verarbeitung von POST-Anfragen, Basis- und Digest-Authentifizierung, IPv6, SHOUTcast, verschiedene Verbindungsmultiplexverfahren (Select, Poll, Epoll) und Multithreading-Modelle (z. B. Verwendung eines Thread-Pools oder eines Threads pro Verbindung). Um den Overhead beim Kontextwechsel zwischen Kernel und Benutzeroberfläche zu reduzieren, wird die Anzahl der Systemaufrufe während des Betriebs minimiert.
Die bemerkenswertesten Änderungen:
- Die API führt eine neue Funktion MHD_get_version_bin() ein, um Versionsinformationen der Bibliothek in gepacktem Format abzurufen (z. B. 0x00097701).
- Die im RFC empfohlene Form wird um Kennungen der zur Digest-Authentifizierung verwendeten Algorithmen ergänzt („MD5“ / „SHA-256“ statt „md5“ / „sha-256“).
- Der Code zum Dekodieren von Blöcken im Base64-Format wurde neu geschrieben und die Gültigkeitsprüfung der Eingabedaten im Base64-Format wurde verstärkt.
- Verbesserte Cross-Compilation-Einstellungen, erhöhte Kompatibilität mit POSIX und neuen Compilerversionen.
- Interne Tests hinzugefügt, um die Dekodierung von Base64, Basic Auth und reduzierten langen HTTP-Headern zu überprüfen.
- Die Tests verwenden eine aktualisierte libcurl-API, um Warnungen zur Verwendung veralteter Aufrufe auszublenden.
- Beim Erstellen für ARM- und ARM64-Systeme wurde die Möglichkeit hinzugefügt, VC-Compiler (Visual C) zu verwenden.
- Alle von einem Rückruf zurückgegebenen negativen Werte werden jetzt als Fehler behandelt (zuvor konnten negative Werte, mit Ausnahme vordefinierter Fehlercodes, zu undefiniertem Verhalten führen).
- Handhabung des Präprozessormakros „DEBUG“ hinzugefügt (der Handler ist identisch mit dem Makro „_DEBUG“).
- Kumulierte Fehler behoben.
Source: opennet.ru
