Author: sgriepentrog
Date: Fri Oct 31 11:24:00 2014
New Revision: 426925

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=426925
Log:
pjsip: Handle outbound register correctly

This updates the status of the outbound registration
to reflect when it has been unregistered.  Since the
registration is unregistered but is not stopped, the
registration schedule remains active as before.  The
patch also updates the documentation of both the AMI
and CLI commands.

ASTERISK-24411 #close
Reported by: John Bigelow
patches:
  unregister-patch1.txt uploaded by John Bigelow (License 5091)
........

Merged revisions 426923 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 426924 from http://svn.asterisk.org/svn/asterisk/branches/13

Modified:
    trunk/   (props changed)
    trunk/res/res_pjsip_outbound_registration.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-13-merged' - no diff available.

Modified: trunk/res/res_pjsip_outbound_registration.c
URL: 
http://svnview.digium.com/svn/asterisk/trunk/res/res_pjsip_outbound_registration.c?view=diff&rev=426925&r1=426924&r2=426925
==============================================================================
--- trunk/res/res_pjsip_outbound_registration.c (original)
+++ trunk/res/res_pjsip_outbound_registration.c Fri Oct 31 11:24:00 2014
@@ -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 @@
        }
 
        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 @@
                        "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);


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to