|
|
|
|
@ -126,7 +126,7 @@ static void call_packet_loss(struct ETCP_CONN* conn, struct ll_entry* entry) {
|
|
|
|
|
int cmd = entry->dgram[ROUTER_SVC_PAYLOAD_OFF]; |
|
|
|
|
if ((idx == IDX_A && cmd == 3 && g_drop_result-- > 0) || (idx == IDX_C && cmd == 4 && g_drop_ack-- > 0) || |
|
|
|
|
(idx == IDX_C && cmd == 6 && g_drop_force-- > 0)) { |
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_RADIO, "test drops radio result/ACK dst=%d command=%d", idx, cmd); |
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_RADIO, "test drops radio signaling dst=%d command=%d", idx, cmd); |
|
|
|
|
queue_dgram_free(entry); queue_entry_free(entry); return; |
|
|
|
|
} |
|
|
|
|
g_call_recv[idx](conn, entry); |
|
|
|
|
@ -603,6 +603,8 @@ static void rad_tick(void* arg) {
|
|
|
|
|
t->result = 2; uasync_stop(t->ua); return; |
|
|
|
|
} |
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_RADIO, "test radio calls passed: 2s/60s, accept/decline/cancel/busy, lost result/ACK, idle has no timer"); |
|
|
|
|
// Проверка idle пересоздала сервис и его binding; снова включаем потерю пакетов приложения.
|
|
|
|
|
for (int i = 0; i < 3; ++i) t->inst[i]->router_bindings.callbacks[ETCP_RT_ID_RADIO_CALL] = call_packet_loss; |
|
|
|
|
call_set_phone_state(C, 2, CALL_POLICY_WARN_PHONE); |
|
|
|
|
radio_action(A, 108, RADIO_CALL_START, nc); ++t->call_step; |
|
|
|
|
} |
|
|
|
|
|