From: Matt Jordan Date: Mon, 23 Nov 2015 15:26:14 +0000 (-0600) Subject: Merge "res/res_pjsip_outbound_registration: Add registration statistics for StatsD... X-Git-Tag: 13.7.0-rc1~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=16437667eba0ab113b06ce31b1dd04cf0add3c2c;p=thirdparty%2Fasterisk.git Merge "res/res_pjsip_outbound_registration: Add registration statistics for StatsD" into 13 --- 16437667eba0ab113b06ce31b1dd04cf0add3c2c diff --cc res/res_pjsip_outbound_registration.c index 9795a5971a,22657ecd6e..6f3155d8b7 --- a/res/res_pjsip_outbound_registration.c +++ b/res/res_pjsip_outbound_registration.c @@@ -796,21 -796,14 +810,21 @@@ static int handle_registration_response if (PJSIP_IS_STATUS_IN_CLASS(response->code, 200)) { /* Check if this is in regards to registering or unregistering */ if (response->expiration) { + int next_registration_round; + /* If the registration went fine simply reschedule registration for the future */ ast_debug(1, "Outbound registration to '%s' with client '%s' successful\n", server_uri, client_uri); - response->client_state->status = SIP_REGISTRATION_REGISTERED; + update_client_state_status(response->client_state, SIP_REGISTRATION_REGISTERED); response->client_state->retries = 0; - schedule_registration(response->client_state, response->expiration - REREGISTER_BUFFER_TIME); + next_registration_round = response->expiration - REREGISTER_BUFFER_TIME; + if (next_registration_round < 0) { + /* Re-register immediately. */ + next_registration_round = 0; + } + schedule_registration(response->client_state, next_registration_round); } else { ast_debug(1, "Outbound unregistration to '%s' with client '%s' successful\n", server_uri, client_uri); - response->client_state->status = SIP_REGISTRATION_UNREGISTERED; + update_client_state_status(response->client_state, SIP_REGISTRATION_UNREGISTERED); } } else if (response->client_state->destroy) { /* We need to deal with the pending destruction instead. */