Nedávno projekt GNU vydal vydání novou verzi knihovny libmicrohttpd 0.9.74, A představující jednoduché API pro vestavěnou funkcionalitu HTTP serveru v aplikacích.
Knihovna podporuje protokol HTTP 1.1, TLS, přírůstkové zpracování požadavků POST, základní a digestivní autentizace, IPv6, SHOUTcast a různé metody multiplexování připojení (select, poll, pthread, thread pool), v současné době má implementace podporu pro různé podporované platformy, včetně GNU / Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android , macOS, Win32, Symbian az / OS.
GNU libmicrohttpd se zrodil kvůli potřebě svého autora, který v té době potřeboval snadný způsob, jak přidat souběžný HTTP server do jiných projektů. Stávající alternativy byly nesvobodné, nereentrantní, samostatné, hrozná kvalita kódu nebo jejich kombinace.
Z charakteristik které vynikají této implementaci:
- Knihovna C: rychlá a malá
- API je jednoduché, expresivní a zcela reentry.
- Implementace je kompatibilní s HTTP 1.1
- HTTP server může naslouchat na více portech
- Režimy více vláken: Spustit na aplikačním vláknu, interním vláknu, fondu vláken a vláken na připojení
- Tři různé režimy soketového dotazování: výběr (), dotazování () a epoll
- Minimální počet systémových volání, aby se zabránilo dalším změnám režimu jádra/uživatele
- Mezi podporované platformy patří GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
- Solaris a z / OS
- Podpora protokolu IPv6
- Podpora SHOUTcast
- Podpora pro přírůstkové zpracování dat POST (volitelné)
- Podpora základní a implicitní autentizace (volitelné)
- Podpora TLS (vyžaduje libgnutls, volitelné)
- Binární soubor má pouze asi 32 kB (bez podpory TLS a dalších volitelných funkcí)
Hlavní nové funkce libmicrohttpd 0.9.74
V této nové verzi knihovny to najdeme přidána experimentální implementace protokolu WebSockets, který ještě není dobře testován a je ve výchozím nastavení zakázán.
Další novinkou, která je představena, je to byla zlepšena shoda s implementačními specifikacemi protokolu HTTP 1.0 / 1.1Kromě toho byl kód přepracován tak, aby dekódoval fragmentované požadavky.
To je také zdůrazněno přidán kód pro automatické vracení chyb souvisejících se špatně rozdělenými požadavky, příliš velká velikost dat a nesprávné nastavení záhlaví Content-Length.
Bylo to realizováno vnitřní optimalizace, například zlepšená správa paměti, zlepšená efektivita hash a odstranění opakované analýzy HTTP metody a verze protokolu.
A také je třeba poznamenat, že poskytl přísnější ověření hodnot hlaviček HTTP, umožnil použití znaku tabulátoru v hodnotách hlavičky odpovědi, ale zakázal použití mezer v hodnotách vlastních hlaviček.
Kromě toho, kód pro generování HTTP hlaviček v odpovědi byl zcela přepsán a přesnost časového limitu byla zvýšena ze sekund na milisekundy.
Přidána možnost sestavení –enable-sanitizers [= adresa, nedefinováno, únik, uživatelská otrava] pro selektivní povolení režimů detekce problémů v kódu.
Opraveny, upřesněny, rozšířeny a vylepšeny popisy funkcí Doxy, nyní se uvádí, že by mělo být mnohem snazší naučit se MHD pouhým čtením nadpisů.
Z dalších změn, které v této nové verzi vynikají:
- Vylepšené popisy funkcí v záhlaví souboru microhttpd.h.
- přidané funkce API MHD_get_reason_phrase_len_for () a MHD_create_response_from_buffer_with_free_callback_cls (), MHD_CONNECTION_INFO_HTTP_STATUS vlajky, MHD_get_connection_info (), jakož i odpovědi MHD_CONNECTION_INFO_HTTP_STATUS vlajky a odpovědi MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_.
- Přidán soubor projektu pro sestavení v MSVC.
- Formace záhlaví odpovědi byla zcela přepsána. Nová implementace je robustnější, snáze se udržuje a rozšiřuje a lépe odpovídá specifikacím RFC HTTP.
- Vylepšení výkonu: Verze HTTP a metoda požadavku jsou nyní dekódovány pouze jednou (dříve MHD používalo mnoho porovnání řetězců
Konečně pokud máte zájem o tom vědět více o této verzi si můžete přečíst uživatelské příručky a další informace na jejích webových stránkách.