summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
Diffstat (limited to 'res')
-rw-r--r--res/res_pjsip_outbound_registration.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/res/res_pjsip_outbound_registration.c b/res/res_pjsip_outbound_registration.c
index 3e6c984b2..af4a3694d 100644
--- a/res/res_pjsip_outbound_registration.c
+++ b/res/res_pjsip_outbound_registration.c
@@ -138,6 +138,14 @@
<para>The outbound registration to unregister.</para>
</parameter>
</syntax>
+ <description>
+ <para>
+ Send a SIP REGISTER request to the specified outbound registration with an expiration of 0.
+ This will cause the contact added by this registration to be removed on the remote system.
+ Note: The specified outbound registration will attempt to re-register according to it's last
+ registration expiration.
+ </para>
+ </description>
</manager>
<manager name="PJSIPShowRegistrationsOutbound" language="en_US">
<synopsis>
@@ -465,11 +473,17 @@ static int handle_registration_response(void *data)
}
if (PJSIP_IS_STATUS_IN_CLASS(response->code, 200)) {
- /* 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;
- response->client_state->retries = 0;
- schedule_registration(response->client_state, response->expiration - REREGISTER_BUFFER_TIME);
+ /* Check if this is in regards to registering or unregistering */
+ if (response->expiration) {
+ /* 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;
+ response->client_state->retries = 0;
+ schedule_registration(response->client_state, response->expiration - REREGISTER_BUFFER_TIME);
+ } else {
+ ast_debug(1, "Outbound unregistration to '%s' with client '%s' successful\n", server_uri, client_uri);
+ response->client_state->status = SIP_REGISTRATION_UNREGISTERED;
+ }
} else if (response->retry_after) {
/* If we have been instructed to retry after a period of time, schedule it as such */
schedule_retry(response, response->retry_after, server_uri, client_uri);
@@ -999,7 +1013,9 @@ static char *cli_unregister(struct ast_cli_entry *e, int cmd, struct ast_cli_arg
"Usage: pjsip send unregister <registration>\n"
" Send a SIP REGISTER request to the specified outbound "
"registration with an expiration of 0. This will cause the contact "
- "added by this registration to be removed on the remote system.\n";
+ "added by this registration to be removed on the remote system. Note: "
+ "The specified outbound registration will attempt to re-register "
+ "according to its last registration expiration.\n";
return NULL;
case CLI_GENERATE:
return cli_complete_registration(a->line, a->word, a->pos, a->n);