Ticket #970: More gracefull PJSUA-LIB shutdown sequence. Enhancements:
 - wait for unregistration to complete (or a preconfigured delay expires)
 - new account config field to set the maximum delay to wait for unregistration
 - rejects incoming requests (INVITE, SUBSCRIBE, and OPTIONS) when shutdown is in progress


git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@2943 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c
index 4515636..935a41e 100644
--- a/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -682,6 +682,14 @@
 
     /* Incoming SUBSCRIBE: */
 
+    /* Don't want to accept the request if shutdown is in progress */
+    if (pjsua_var.thread_quit_flag) {
+	pjsip_endpt_respond_stateless(pjsua_var.endpt, rdata, 
+				      PJSIP_SC_TEMPORARILY_UNAVAILABLE, NULL,
+				      NULL, NULL);
+	return PJ_TRUE;
+    }
+
     PJSUA_LOCK();
 
     /* Find which account for the incoming request. */
@@ -1721,6 +1729,8 @@
 {
     unsigned i;
 
+    PJ_LOG(4,(THIS_FILE, "Shutting down presence.."));
+
     if (pjsua_var.pres_timer.id != 0) {
 	pjsip_endpt_cancel_timer(pjsua_var.endpt, &pjsua_var.pres_timer);
 	pjsua_var.pres_timer.id = PJ_FALSE;