Il progetto GNU ha pubblicato la versione della libreria libmicrohttpd 0.9.74, che offre un API semplice per integrare funzionalità di server HTTP nelle applicazioni. La libreria supporta il protocollo HTTP 1.1, TLS, l'elaborazione incrementale delle richieste POST, l'autenticazione basic e digest, IPv6, SHOUTcast e vari metodi di multiplexing delle connessioni (select, poll, pthread, thread pool). Tra le piattaforme supportate troviamo: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, macOS, Win32, Symbian e z/OS. La libreria è distribuita sotto licenza LGPL 2.1+.
Nella nuova versione:
- È stata aggiunta un'implementazione sperimentale del protocollo WebSockets, attualmente non sufficientemente testata e disabilitata per impostazione predefinita.
- Migliorata la conformità alle specifiche delle implementazioni dei protocolli HTTP 1.0/1.1.
- Rivisitato il codice per la decodifica delle richieste chunked.
- Riscritta completamente la logica per la generazione delle intestazioni HTTP in risposta.
- Aggiunto codice per il ritorno automatico degli errori relativi a richieste chunked non valide, dimensioni dei dati troppo grandi e errata impostazione dell'intestazione Content-Length.
- La precisione nel fissare i timeout è stata aumentata da secondi a millisecondi.
- Sono state eseguite ottimizzazioni interne, come il miglioramento della gestione della memoria, l'aumento dell'efficienza dell'hashing e l'eliminazione del parsing ripetuto della versione del protocollo e del metodo HTTP.
- È stata garantita una verifica più rigorosa della correttezza dei valori degli header HTTP, è consentito l'uso del carattere di tabulazione nei valori degli header di risposta, ma è vietato l'uso dello spazio nei valori degli header personalizzati.
- È stata aggiunta l'opzione di compilazione '—enable-sanitizers[=address,undefined,leak,user-poison]' per attivare selettivamente le modalità di rilevamento dei problemi nel codice.
- È stato aggiunto un file di progetto per la compilazione in MSVC.
Fonte: opennet.ru
