|
|
|
|
@ -611,8 +611,8 @@ static void ncd_cancel_deliver_up(struct NODE_CONN_DIRECT* h, struct UASYNC* ua)
|
|
|
|
|
/*
|
|
|
|
|
* fin_wait — состояние ожидания подтверждения закрытия от пира. |
|
|
|
|
* Вызывающая сторона: мы отправили CLOSE и ждём ответа (KEEP_ALIVE или DOWN). |
|
|
|
|
* Максимальное время ожидания — NCD_FIN_WAIT_TIMEOUT_TB (5 сек), после чего |
|
|
|
|
* соединение форсированно закрывается. |
|
|
|
|
* Обычное ожидание — NCD_FIN_WAIT_TIMEOUT_TB (5 сек); объявленный сон продлевает |
|
|
|
|
* его до RX deadline живого линка. По истечении закрываем транспорт. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
@ -627,7 +627,7 @@ static void ncd_fin_wait_cancelled(struct ETCP_CONN* conn, void* arg) {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Таймаут fin_wait: peer не ответил на CLOSE за NCD_FIN_WAIT_TIMEOUT_TB (5 сек). |
|
|
|
|
* Таймаут fin_wait: peer не ответил на CLOSE в отведённый срок с учётом сна. |
|
|
|
|
* Форсированно закрываем conn и освобождаем entry — соединение разорвано |
|
|
|
|
* без подтверждения от пира. |
|
|
|
|
*/ |
|
|
|
|
@ -1125,7 +1125,7 @@ int node_conn_direct_open_node(struct UTUN_INSTANCE* inst, uint64_t node_id,
|
|
|
|
|
* |
|
|
|
|
* Если это был последний handle (handle_count стал 0): |
|
|
|
|
* - Запускается протокол graceful shutdown: пиру отправляется CLOSE, conn |
|
|
|
|
* переводится в fin_wait, ставится таймер на 5 сек. |
|
|
|
|
* переводится в fin_wait, ставится таймер на 5 сек либо до пробуждения пира. |
|
|
|
|
* - Если пир ответит KEEP_ALIVE (у него ещё есть handle'ы) — conn останется жив, |
|
|
|
|
* просто без наших handle'ов. |
|
|
|
|
* - Если пир не ответит — conn закрывается форсированно по таймауту. |
|
|
|
|
|