Projekt GNU opublikował wydanie biblioteki libmicrohttpd 0.9.74, która stanowi prosty interfejs API do wbudowywania funkcji serwera HTTP w aplikacje. Biblioteka wspiera protokół HTTP 1.1, TLS, inkrementalne przetwarzanie zapytań POST, uwierzytelnianie basic i digest, IPv6, SHOUTcast oraz różne metody multiplexowania połączeń (select, poll, pthread, thread pool). Wśród wspieranych platform są: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, macOS, Win32, Symbian oraz z/OS. Biblioteka jest udostępniana na licencji LGPL 2.1+.
W nowej wersji:
- Dodano eksperymentalną implementację protokołu WebSockets, która jak dotąd nie została dobrze przetestowana i jest domyślnie wyłączona.
- Poprawiono zgodność ze specyfikacjami implementacji protokołów HTTP 1.0/1.1.
- Przeprojektowano kod do dekodowania zapytań chunked.
- Całkowicie przepisano kod generowania nagłówków HTTP w odpowiedzi.
- Dodano kod do automatycznego zwracania błędów związanych z nieprawidłowymi zapytaniami chunked, zbyt dużymi rozmiarami danych oraz nieprawidłowym ustawieniem nagłówka Content-Length.
- Dokładność ustawiania timeoutów zwiększono z sekund do milisekund.
- Przeprowadzono wewnętrzne optymalizacje, na przykład poprawiono zarządzanie pamięcią, zwiększono wydajność haszowania i wyeliminowano powtarzające się analizowanie wersji protokołu i metody HTTP.
- Zagwarantowano surowszą kontrolę poprawności wartości nagłówków HTTP, zezwolono na użycie znaku tabulacji w wartościach nagłówków odpowiedzi, ale zabroniono użycia spacji w wartościach nagłówków użytkownika.
- Dodano opcję kompilacji ‘—enable-sanitizers[=address,undefined,leak,user-poison]’ do selektywnego włączania trybów wykrywania problemów w kodzie.
- Dodano plik projektu do kompilacji w MSVC.
Źródło: opennet.ru
