Proiectul GNU a publicat versiunea bibliotecii libmicrohttpd 0.9.77, care oferă o API simplă pentru integrarea funcționalității serverului HTTP în aplicații. Printre platformele suportate se numără: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Android, macOS, Win32 și z/OS. Biblioteca este distribuită sub licența LGPL 2.1+. În forma sa compilată, biblioteca ocupă aproximativ 32 KB.
Biblioteca suportă protocolul HTTP 1.1, TLS, procesarea incrementală a cererilor POST, autentificarea basic și digest, IPv6, SHOUTcast, diferite metode de multiplexare a conexiunilor (select, poll, epoll) și modele de multi-threading (de exemplu, se poate folosi un pool de fire de execuție sau un fir de execuție pe conexiune). Pentru a reduce suprasarcina generată de schimbarea contextului între nucleu și spațiul utilizatorului, numărul apelurilor sistemului în timpul execuției este minimizat.
Cele mai notabile schimbări:
- API-ul a introdus o nouă funcție MHD_get_version_bin() pentru obținerea informațiilor despre versiunea bibliotecii în format compact (de exemplu, 0x00097701).
- Formularului recomandat în RFC i s-au adăugat identificatorii algoritmilor folosiți pentru autentificarea digest („MD5” / „SHA-256” în loc de „md5” / „sha-256”).
- Codul de decodare a blocurilor în format Base64 a fost rescris, întărind verificarea corectitudinii datelor de intrare în format Base64.
- Configurarea cross-compilării a fost îmbunătățită, sporind compatibilitatea cu POSIX și noile versiuni ale compilatoarelor.
- Teste interne au fost adăugate pentru verificarea decodării Base64, Basic Auth și a header-elor HTTP lungi care sunt consolidate.
- Testele au fost efectuate utilizând API-ul actualizat al bibliotecii libcurl pentru a ascunde avertizările legate de utilizarea apelurilor deprecate.
- A fost adăugată posibilitatea de a utiliza compilatoarele VC (Visual C) atunci când se compilează pentru sistemele ARM și ARM64.
- Orice valori negative returnate de apelurile callback sunt acum interpretate ca erori (anterior, valorile negative, cu excepția codurilor de eroare predefinite, puteau duce la comportament nedefinit).
- A fost adăugată procesarea macro-ului preprocesorului „DEBUG” (handlerul fiind identic cu macro-ul „_DEBUG”).
- Erorile acumulate au fost corectate.
Sursa: opennet.ro
