Проект GNU опубликовал выпуск библиотеки libmicrohttpd 0.9.77, представляющей простой API для встраивания функциональности HTTP-сервера в приложения. Среди поддерживаемых платформ: GNU/LinuxFreeBSD、OpenBSD、NetBSD、Solaris Android, macOS, Win32 и z/OS. Библиотека распространяется под лицензией LGPL 2.1+. В собранном виде библиотека занимает около 32 КБ.
该库支持 HTTP 1.1 协议、TLS、POST 请求的增量处理、基本和摘要身份验证、IPv6、SHOUTcast、各种连接复用方法(select、poll、epoll)和多线程模型(例如,您可以使用线程池或每个连接的线程)。为了减少内核和用户空间之间上下文切换时产生的开销,运行期间的系统调用次数保持在最低限度。
最明显的变化:
- API 提供了一个新函数 MHD_get_version_bin(),以打包格式(例如 0x00097701)获取有关库版本的信息。
- RFC 中推荐的形式包含用于摘要身份验证的算法的标识符(“MD5”/“SHA-256”而不是“md5”/“sha-256”)。
- 重写了Base64格式块的解码代码,并加强了对Base64格式输入数据正确性的验证。
- 改进了交叉编译设置,提高了与 POSIX 和新版本编译器的兼容性。
- 添加了内部测试来检查 Base64 解码、基本身份验证和折叠的长 HTTP 标头。
- 这些测试使用更新的 libcurl API 来隐藏有关使用已弃用的调用的警告。
- 添加了在构建 ARM 和 ARM64 系统时使用 VC (Visual C) 编译器的功能。
- 回调调用返回的任何负值现在都被视为错误(以前的负值,除了预定义的错误代码之外,可能会导致未定义的行为)。
- 添加了预处理器宏“DEBUG”的处理(处理程序与宏“_DEBUG”相同)。
- 累积错误已得到修复。
来源: opennet.ru
