diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c
index b9429d36a1f420b9bc35bac49965a38dd2ec0c18..63f34a014db216b6c113fe1d66358237e6d9539b 100644
--- a/res/res_pjsip_outbound_registration.c
+++ b/res/res_pjsip_outbound_registration.c
@@ -307,27 +307,30 @@ static void schedule_registration(struct sip_outbound_registration_client_state
 static int handle_client_state_destruction(void *data)
 {
 	RAII_VAR(struct sip_outbound_registration_client_state *, client_state, data, ao2_cleanup);
-	pjsip_regc_info info;
 
 	cancel_registration(client_state);
 
-	pjsip_regc_get_info(client_state->client, &info);
+	if (client_state->client) {
+		pjsip_regc_info info;
 
-	if (info.is_busy == PJ_TRUE) {
-		/* If a client transaction is in progress we defer until it is complete */
-		client_state->destroy = 1;
-		return 0;
-	}
+		pjsip_regc_get_info(client_state->client, &info);
 
-	if (client_state->status != SIP_REGISTRATION_UNREGISTERED && client_state->status != SIP_REGISTRATION_REJECTED_PERMANENT) {
-		pjsip_tx_data *tdata;
+		if (info.is_busy == PJ_TRUE) {
+			/* If a client transaction is in progress we defer until it is complete */
+			client_state->destroy = 1;
+			return 0;
+		}
+
+		if (client_state->status != SIP_REGISTRATION_UNREGISTERED && client_state->status != SIP_REGISTRATION_REJECTED_PERMANENT) {
+			pjsip_tx_data *tdata;
 
-		if (pjsip_regc_unregister(client_state->client, &tdata) == PJ_SUCCESS) {
-			pjsip_regc_send(client_state->client, tdata);
+			if (pjsip_regc_unregister(client_state->client, &tdata) == PJ_SUCCESS) {
+				pjsip_regc_send(client_state->client, tdata);
+			}
 		}
-	}
 
-	pjsip_regc_destroy(client_state->client);
+		pjsip_regc_destroy(client_state->client);
+	}
 
 	client_state->status = SIP_REGISTRATION_STOPPED;
 	ast_sip_auth_vector_destroy(&client_state->outbound_auths);