From 3cd57aaff2eff5f84f2a5b8e0223ee78361fd178 Mon Sep 17 00:00:00 2001 From: Kevin Harwell Date: Wed, 20 Nov 2019 12:56:08 -0600 Subject: [PATCH] res_pjsip_outbound_registration: add support for SRV failover ASTERISK-28624 Change-Id: I8da7c300dd985ab7b10dbd5194aff2f737808561 --- res/res_pjsip_outbound_registration.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c index fc52e9e284..9ea6054212 100644 --- a/res/res_pjsip_outbound_registration.c +++ b/res/res_pjsip_outbound_registration.c @@ -910,7 +910,17 @@ static int handle_registration_response(void *data) ast_debug(1, "Processing REGISTER response %d from server '%s' for client '%s'\n", response->code, server_uri, client_uri); - if ((response->code == 401 || response->code == 407) + if (response->code == 408 || response->code == 503) { + if ((ast_sip_failover_request(response->old_request))) { + int res = registration_client_send(response->client_state, response->old_request); + /* The tdata ref was stolen */ + response->old_request = NULL; + if (res == PJ_SUCCESS) { + ao2_ref(response, -1); + return 0; + } + } + } else if ((response->code == 401 || response->code == 407) && (!response->client_state->auth_attempted || response->rdata->msg_info.cseq->cseq != response->client_state->auth_cseq)) { int res;