From 1ac4c22d9e76d7e778ee4676d9916605f56d2fe2 Mon Sep 17 00:00:00 2001 From: George Yang <george.yang@iopsys.eu> Date: Thu, 21 Mar 2024 09:30:27 +0000 Subject: [PATCH] Fix a crash issue when wan link is disconnected --- res/res_pjsip/pjsip_resolver.c | 2 +- res/res_pjsip_outbound_registration.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/res/res_pjsip/pjsip_resolver.c b/res/res_pjsip/pjsip_resolver.c index eb370117e5..5ea8d0dc79 100644 --- a/res/res_pjsip/pjsip_resolver.c +++ b/res/res_pjsip/pjsip_resolver.c @@ -231,7 +231,7 @@ void ast_sip_resolve_track_cur_addr(pjsip_tx_data *tdata) { struct host_track_entry *host = NULL; - if (!pj_strlen(&tdata->dest_info.name)) + if (!tdata || !pj_strlen(&tdata->dest_info.name)) return; AST_LIST_LOCK(&sip_resolve_track); diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c index a4339f3df7..b7ef2b0e2b 100644 --- a/res/res_pjsip_outbound_registration.c +++ b/res/res_pjsip_outbound_registration.c @@ -1647,7 +1647,8 @@ static int handle_registration_response(void *data) } else { unsigned int retry_interval; // If tried all addresses for 3 times, then start to use retry interval2, otherwise interval1 - if (++response->client_state->failover_retries % (3 * response->old_request->dest_info.addr.count)) + ++response->client_state->failover_retries; + if (!response->old_request || response->client_state->failover_retries % (3 * response->old_request->dest_info.addr.count)) retry_interval = response->client_state->failover_retry_interval1; else retry_interval = response->client_state->failover_retry_interval2; -- GitLab