25.01.2022

Выпуск библиотеки GNU libmicrohttpd 0.9.74

Проект GNU опубликовал выпуск библиотеки libmicrohttpd 0.9.74, представляющей простой API для встраивания функциональности HTTP-сервера в приложения. Библиотека поддерживает протокол HTTP 1.1, TLS, инкрементальную обработку POST-запросов, basic- и digest-аутентификацию, IPv6, SHOUTcast и различные методы мультиплексирования соединений (select, poll, pthread, thread pool). Среди поддерживаемых платформ: GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android, macOS, Win32, Symbian и z/OS. Библиотека распространяется под лицензией LGPL 2.1+.

В новой версии:

  • Добавлена экспериментальная реализация протокола WebSockets, которая пока недостаточно хорошо протестирована и отключена по умолчанию.
  • Улучшено соответствие спецификациям реализаций протоколов HTTP 1.0/1.1.
  • Переделан код для декодирования chunked-запросов.
  • Полностью переписан код формирования HTTP-заголовков при ответе.
  • Добавлен код для автоматического возвращения ошибок, связанных с некорректными chunked-запросами, слишком большим размером данных и неверным выставлением заголовка Content-Length.
  • Точность задания таймаутов повышена с секунд до миллисекунд.
  • Проведены внутренние оптимизации, например, улучшено управление памятью, повышена эффективность хэширования и исключён повторяющийся разбор версии протокола и метода HTTP.
  • Обеспечена более строгая проверка корректности значений HTTP-заголовков, разрешено использование символа табуляции в значениях заголовков ответа, но запрещено использование пробела в значениях пользовательских заголовков.
  • Добавлена сборочная опция ‘—enable-sanitizers[=address,undefined,leak,user-poison]’ для выборочного включения режимов выявления проблем в коде.
  • Добавлен файл проекта для сборки в MSVC.

Источник.