diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c
index 167bf7f3d3602e1112a6aec5ed0f59af35104c07..2aed231ee755148d32f813115a3e8a343ba234af 100644
--- a/res/res_pjsip_outbound_registration.c
+++ b/res/res_pjsip_outbound_registration.c
@@ -462,8 +462,6 @@ static int handle_client_registration(void *data)
 	pjsip_regc_info info;
 	char server_uri[PJSIP_MAX_URL_SIZE], client_uri[PJSIP_MAX_URL_SIZE];
 
-	ao2_ref(client_state, -1);
-
 	if ((client_state->status == SIP_REGISTRATION_STOPPED) ||
 		(pjsip_regc_register(client_state->client, PJ_FALSE, &tdata) != PJ_SUCCESS)) {
 		return 0;
@@ -512,6 +510,7 @@ static void sip_outbound_registration_timer_cb(pj_timer_heap_t *timer_heap, stru
 		ast_log(LOG_WARNING, "Failed to pass outbound registration to threadpool\n");
 		ao2_ref(client_state, -1);
 	}
+	ao2_ref(client_state, -1);
 
 	entry->id = 0;
 }