topo: remember REQUEST_TABLE for not-yet-created groups, fulfill on create
При REQUEST_TABLE для ещё не созданной группы (CHAT-канал не загружен) пир дропал запрос, и проситель навсегда не узнавал таблицу — односторонняя видимость (звонок android→linux падал «peer offline»). Теперь запрос запоминается в pending_table_reqs[32] и выполняется при создании группы (topo_group_fulfill_table_reqs → handle_request_table). Попутно: test_chat_join_e2e — критерий успеха через CHAT_EVT_CONNECT_RESULT (JOIN_READY) вместо senders_list; doxygen-комментарии в etcp_api.h.
This commit is contained in:
1 parent
8bfb456161
commit
6d3ad965ee
5 files changed
+221
-19
No files matched your search
+11
-3
@@ -186,9 +186,17 @@
|
||||
`router_no_route`), не влияет на результат — стоит разобрать отдельно.
|
||||
|
||||
## Открытые флаки
|
||||
[ ] **test_chat_join_e2e** — стабильно падает (2/3 сценария): «J not signed by A»
|
||||
`get_sign_rc=-1` (signed_by-верификация invite). Не связан с socket-классификацией
|
||||
(обнаружен при прогоне после фикса Q8/LAN). Скорее всего регресс join-протокола.
|
||||
[+] **test_chat_join_e2e** — сделано. Причина: ложный критерий успеха джойнера J.
|
||||
`wait_group_started()` проверял `senders_list` непуст в предположении «senders_list
|
||||
непуст ⟺ J получил JOIN_READY». После коммита b483335c `tgi_to_channel_cb`
|
||||
(topo_group_invite.c) при `NCD_EVENT_UP` стал вызывать `topo_group_new_conn` →
|
||||
conn попадает в `senders_list` сразу после установки TCP/UDP-соединения, ДО
|
||||
завершения хендшейка (JOIN_INFO_REQ→RESP→REQUEST→READY). J выходил «OK» раньше,
|
||||
чем A получал JOIN_REQUEST → A не подписывал J → `wait_signed` на A/C падал
|
||||
(`get_sign_rc=-1`). Фикс: критерий J — событие `CHAT_EVT_CONNECT_RESULT(result=0)`
|
||||
(JOIN_READY), ловится через `chat_event_set_handler`; `wait_group_started` удалён.
|
||||
Это также убрало гонку «C вышел раньше, чем J синкает свой рекорд» (C выходит сразу
|
||||
после `wait_signed`, не дожидаясь merkle-синка J). 5 прогонов стабильно 3/3.
|
||||
|
||||
[ ] **test_etcp_reconnect** — флаки под параллельной нагрузкой `make check -j4`:
|
||||
phase 4 (reconnect после server restart) таймаутит (`sent=480 recv=0`), при одиночном
|
||||
|
||||
Reference in new issue
Block a user