]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip_outbound_registration: add support for SRV failover
authorKevin Harwell <kharwell@digium.com>
Wed, 20 Nov 2019 18:56:08 +0000 (12:56 -0600)
committerKevin Harwell <kharwell@digium.com>
Wed, 20 Nov 2019 18:56:49 +0000 (13:56 -0500)
ASTERISK-28624

Change-Id: I8da7c300dd985ab7b10dbd5194aff2f737808561

res/res_pjsip_outbound_registration.c

index df50cf40fe3e5ba7c76fd616265bb0d29b5759b1..acc4b1d3a1f948ab03fd3f06972754c654f2bdbf 100644 (file)
@@ -1033,7 +1033,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;