Il progetto GNU ha pubblicato la versione 0.9.74 della libreria libmicrohttpd, che fornisce una semplice API per integrare la funzionalità di un 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 diversi metodi di multiplexing delle connessioni (select, poll, pthread, thread pool). Tra le piattaforme supportate: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, macOS, Win32, Symbian e z/OS. La libreria è distribuita con 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.
- Riscritto il codice per la decodifica delle richieste chunked.
- Completamente riscritto il codice per la generazione degli header HTTP nella risposta.
- Aggiunto codice per il ritorno automatico degli errori legati a richieste chunked errate, dimensioni dei dati eccessive e impostazione non corretta dell'header Content-Length.
- La precisione nella definizione dei timeout è stata aumentata da secondi a millisecondi.
- Ottimizzazioni interne eseguite, ad esempio, migliorata la gestione della memoria, aumentata l'efficienza dell'hashing ed escluso il parsing ripetuto della versione del protocollo e del metodo HTTP.
- Assicurata una verifica più rigorosa della correttezza dei valori degli header HTTP, è consentito utilizzare il carattere di tabulazione nei valori degli header di risposta, ma è vietato l'uso dello spazio nei valori degli header personalizzati.
- Aggiunta l'opzione di compilazione ‘—enable-sanitizers[=address,undefined,leak,user-poison]’ per attivare selettivamente le modalità di rilevamento dei problemi nel codice.
- Aggiunto un file di progetto per la compilazione in MSVC.
Fonte: opennet.ru
