|
@@ -312,6 +312,33 @@ pcscf_save("location");
|
|
* domain - Logical domain within the registrar. If a database is used
|
|
* domain - Logical domain within the registrar. If a database is used
|
|
then this must be name of the table which stores the contacts.
|
|
then this must be name of the table which stores the contacts.
|
|
|
|
|
|
|
|
+ The return code may have the following values:
|
|
|
|
+ * ( 1) OK
|
|
|
|
+ * (-1) Parsing of contact data failed
|
|
|
|
+ * (-2) Deregistration in progress
|
|
|
|
+
|
|
|
|
+ For db_mode = DB_ONLY (3) setting for ims_usrloc_pcscf module modparam
|
|
|
|
+ following logic is implemented:
|
|
|
|
+ * To avoid race time conditions between a REREGISTER and the expiry
|
|
|
|
+ handler state machine in the scscf an approach is chosen to refuse
|
|
|
|
+ a REREGISTER in time window of 20 seconds after pcontact expiry on
|
|
|
|
+ the pcscf (thus allowing expiry handling to finish). REREGISTER is
|
|
|
|
+ refused in this scenario with return code -2.
|
|
|
|
+ * In case a REREGISTER arrives at pcscf and the respective pcontact
|
|
|
|
+ is expired longer than time window of 20 seconds registration also
|
|
|
|
+ is refused with return code -2 and additionaly PUBLISH is sent to
|
|
|
|
+ scscf with expiry = 0.
|
|
|
|
+ * The rc -2 shall be handled in register.cfg script as follows:
|
|
|
|
+ pcscf_save_pending("location");
|
|
|
|
+ switch ($retcode) {
|
|
|
|
+ case -1:
|
|
|
|
+ .......
|
|
|
|
+ case -2:
|
|
|
|
+ send_reply("500", "Deregister in progress - Please try again");
|
|
|
|
+ exit;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
4.3. pcscf_follows_service_routes(domain)
|
|
4.3. pcscf_follows_service_routes(domain)
|
|
|
|
|
|
Returns true, if the request is following the "learned" service-routes
|
|
Returns true, if the request is following the "learned" service-routes
|