vostok: сервер Gemini, версия 0.2.1

Активное тестирование VGI с одной стороны увеличило аппетит: захотелось иметь возможность авторизации. А с другой стороны вскрылась небольшая проблема для крайнего случая обработки ошибочных ситуаций. Всё это решено в gemini сервере vostok версии 0.2.1.

Предыдущая запись блога разработки

Что нового в версии 0.2.1:

Переменная окружения VGI_CERT_HASH

Для моих новых (пока ещё не анонсированных) проектов мне потребовалась авторизация. Тут грех не воспользоваться тем, что gemini работает по TLS и клиентские сертификаты заложены в спецификацию именно для авторизации.

Весь сертификат (как и его отдельные поля) мне (пока?) не нужен, поэтому при вызове VGI устанавливается переменная окружения VGI_CERT_HASH, которая содержит SHA256 хэш сертификата пользователя. Детали можно найти в описании функции tls_peer_cert_hash:

https://man.openbsd.org/tls_peer_cert_hash

Исправление вызова ожидания дочернего процесса

Подойдя более основательно к тестированию VGI я нашёл небольшой баг: если сервер vostok не смог отдать клиенту очередную порцию данных (например функция tls_write вернула ошибку из-за того, что клиент уже закрыл соединение со своей стороны), то не вызывалось ожидание дочернего процесса VGI. В результате дочерний процесс оставался висеть в дереве процессов.

Исправление достаточно тривиальное, но нужное на длительной дистанции эксплуатирования сервера.