Библиотека поддерживает протокол HTTP 1.1, TLS, инкрементальную обработку POST-запросов, приём соединений с нескольких сетевых портов, basic- и digest-аутентификацию, IPv6, SHOUTcast, различные методы мультиплексирования соединений (select, poll, epoll) и модели многопоточности (например, можно использовать пул потоков или поток на соединение). Для снижения накладных расходов, возникающих при переключении контекста между ядром и пространством пользователя, число системных вызовов в процессе работы сведено к минимуму. Безопасность кодовой базы libmicrohttpd подтверждена аудитами, проведёнными компаниями Mozilla и Red Hat.
Наиболее заметные изменения по сравнению с прошлым выпуском:
- Переписан и приведён к полному соответствию требованиям RFC 9110 и 9112 код для разбора запросов клиентов. Предоставлены режимы строгого и мягкого соблюдения спецификаций для балансирования между совместимостью или более высокой безопасностью.
- Переработана реализация digest-аутентификации, в которой значительно расширена поддержка возможностей, присутствующих в RFC 7617. В том числе обеспечена поддержка SHA-512, userhash и username в расширенной нотации.
Также сохранена поддержка старого RFC 2069 и возможность использования хэшей MD5 и SHA-256. - Улучшена работа в многопоточных окружениях и при режимах полинга сокетов.
- Переработана реализация basic-аутентификации, для которой в ABI предложены дополнительные функции.
- Переделан код для инициализации GnuTLS. Добавлена возможность использования как типовой, так и специфичной для libmicrohttpd системной конфигурации GnuTLS, а также поддержка переопределения отдельных настроек системной конфигурации GnuTLS.
В дальнейшем планируется заняться разработкой ветки libmicrohttpd 2, в которой будет обеспечена поддержка протоколов HTTP/2 и HTTP/3, а также проведена работа по упрощению API и поддержке разных бэкендов для TLS. Начало работы над новой веткой будет профинансировано фондом Sovereign, учреждённым в Германии для стимулирования развития открытой цифровой инфраструктуры и экосистем с открытым исходным кодом.
Источник: http://www.opennet.ru/opennews/art.shtml?num=60540
