diff --git a/doc/stream.txt b/doc/stream.txt index d63ea0a3..5cf67398 100644 --- a/doc/stream.txt +++ b/doc/stream.txt @@ -590,6 +590,10 @@ Stop/destroy выполняются по правилам ядра, вне callb Режимы не смешиваются; внешний receive/probe/restart не может вмешаться в автоматическое владение handles. INFO-only probe не резервирует SUBSCRIBE handle и не передаёт DATA; одним NCD-владением последовательно опрашивает субпотоки. Общий stream_peer переиспользует NCD между группами/источниками; CLOSED handle переоткрывается перед новой попыткой. + INFO_REQ запрашивает неизвестную receiver_epoch=0; INFO_RESP подтверждается nonce текущей пробы и собственной эпохой. + Локальный DOWN/REINIT вращает own epoch. При обнаружении новой чужой эпохи own сохраняется, + старые согласованные выдачи отменяются, а незавершённые INFO получают новый nonce: взаимного вращения эпох нет. + Тест односторонней смены поколения подтвердил восстановление без разрыва ETCP и без смены эпохи другой стороны. Совместимость проверяется в NCD без создания линков: общий исходящий обход IPv4/IPv6/TCP, возможность reverse по публикуемым адресам и sock_match; фактическую достижимость подтверждает ограниченная проба. Стартовая серия — до 32 узлов; далее 1 новый узел/с. Посещённые узлы не повторяются в цикле,