|
|
|
@ -130,14 +130,15 @@ int main(void) { |
|
|
|
// Проверяем остановку доставки и повтор BUSY ACK, затем сразу переходим к restart.
|
|
|
|
// Проверяем остановку доставки и повтор BUSY ACK, затем сразу переходим к restart.
|
|
|
|
struct ETCP_ROUTER_CONN* sender = etcp_router_conn_get(nodes[0], GROUP, nodes[1]->node_id, ETCP_RT_ID_GROUP_AVATAR); |
|
|
|
struct ETCP_ROUTER_CONN* sender = etcp_router_conn_get(nodes[0], GROUP, nodes[1]->node_id, ETCP_RT_ID_GROUP_AVATAR); |
|
|
|
struct ETCP_ROUTER_CONN* receiver = etcp_router_conn_get(nodes[1], GROUP, nodes[0]->node_id, ETCP_RT_ID_GROUP_AVATAR); |
|
|
|
struct ETCP_ROUTER_CONN* receiver = etcp_router_conn_get(nodes[1], GROUP, nodes[0]->node_id, ETCP_RT_ID_GROUP_AVATAR); |
|
|
|
uint64_t hold_started = get_time_tb(), first_busy_ack = 0; |
|
|
|
uint64_t hold_started = get_time_tb(); |
|
|
|
|
|
|
|
uint32_t first_busy_ack = 0; |
|
|
|
int busy_repeated = 0; |
|
|
|
int busy_repeated = 0; |
|
|
|
deadline = hold_started + 20000; |
|
|
|
deadline = hold_started + 20000; |
|
|
|
while (get_time_tb() < deadline) { |
|
|
|
while (get_time_tb() < deadline) { |
|
|
|
uasync_poll(ua, 2); |
|
|
|
uasync_poll(ua, 2); |
|
|
|
if (!receiver->receive_blocked || !sender->peer_receive_blocked) continue; |
|
|
|
if (!receiver->receive_blocked || !sender->peer_receive_blocked) continue; |
|
|
|
if (!first_busy_ack) first_busy_ack = sender->last_ack_changed_tb; |
|
|
|
if (!first_busy_ack) first_busy_ack = sender->c_stale_ack; |
|
|
|
else if (sender->last_ack_changed_tb != first_busy_ack) { busy_repeated = 1; break; } |
|
|
|
else if (sender->c_stale_ack != first_busy_ack) { busy_repeated = 1; break; } |
|
|
|
} |
|
|
|
} |
|
|
|
if (!busy_repeated) DEBUG_ERROR(DEBUG_CATEGORY_CHAT, "test group avatar: BUSY ACK repeat missing blocked=%u peer_blocked=%u", |
|
|
|
if (!busy_repeated) DEBUG_ERROR(DEBUG_CATEGORY_CHAT, "test group avatar: BUSY ACK repeat missing blocked=%u peer_blocked=%u", |
|
|
|
receiver->receive_blocked, sender->peer_receive_blocked); |
|
|
|
receiver->receive_blocked, sender->peer_receive_blocked); |
|
|
|
|