Added initial "norefersub" (RFC 4488) implementation in PJSUA-LIB, and also properly register all supported SIP method, accepted content type, and supported extensions to endpoint.



git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@688 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index c9bd248..a0a87fb 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -334,12 +334,6 @@
 	}
     }
 
-    /* Unregister OPTIONS handler if it's previously registered */
-    if (pjsua_options_handler.id >= 0) {
-	pjsip_endpt_unregister_module(pjsua_var.endpt, &pjsua_options_handler);
-	pjsua_options_handler.id = -1;
-    }
-
     /* Unregister msg logging if it's previously registered */
     if (pjsua_msg_logger.id >= 0) {
 	pjsip_endpt_unregister_module(pjsua_var.endpt, &pjsua_msg_logger);
@@ -350,9 +344,6 @@
     if (pjsua_var.log_cfg.msg_logging)
 	pjsip_endpt_register_module(pjsua_var.endpt, &pjsua_msg_logger);
 
-    /* Register OPTIONS handler */
-    pjsip_endpt_register_module(pjsua_var.endpt, &pjsua_options_handler);
-
     return PJ_SUCCESS;
 }
 
@@ -443,6 +434,7 @@
 {
     pjsua_config	 default_cfg;
     pjsua_media_config	 default_media_cfg;
+    const pj_str_t	 STR_OPTIONS = { "OPTIONS", 7 };
     pj_status_t status;
 
 
@@ -541,6 +533,13 @@
     if (status != PJ_SUCCESS)
 	goto on_error;
 
+    /* Register OPTIONS handler */
+    pjsip_endpt_register_module(pjsua_var.endpt, &pjsua_options_handler);
+
+    /* Add OPTIONS in Allow header */
+    pjsip_endpt_add_capability(pjsua_var.endpt, NULL, PJSIP_H_ALLOW,
+			       NULL, 1, &STR_OPTIONS);
+
     /* Start worker thread if needed. */
     if (pjsua_var.ua_cfg.thread_cnt) {
 	unsigned i;