res_pjsip: Fix issues that prevented shutdown of modules.

res_pjsip and res_pjsip_session had circular references, preventing both
modules from shutting down.
* Move session supplement registration to res_pjsip.
* Use create internal functions for use by pjsip_message_filter.c.

ASTERISK-27306

Change-Id: Ifbd5c19ec848010111afeab2436f9699da06ba6b
This commit is contained in:
Corey Farrell
2017-10-04 11:46:44 -04:00
parent 7156477ba0
commit 7d04544986
6 changed files with 183 additions and 88 deletions

View File

@@ -326,6 +326,18 @@ int internal_sip_register_service(pjsip_module *module);
*/
int internal_sip_unregister_service(pjsip_module *module);
/*!
* \internal
* \brief Used by res_pjsip.so to register a supplement without adding a self reference
*/
void internal_sip_register_supplement(struct ast_sip_supplement *supplement);
/*!
* \internal
* \brief Used by res_pjsip.so to unregister a supplement without removing a self reference
*/
int internal_sip_unregister_supplement(struct ast_sip_supplement *supplement);
/*!
* \internal
* \brief Used by res_pjsip.so to register an endpoint formatter without adding a self reference
@@ -338,6 +350,20 @@ void internal_sip_register_endpoint_formatter(struct ast_sip_endpoint_formatter
*/
int internal_sip_unregister_endpoint_formatter(struct ast_sip_endpoint_formatter *obj);
struct ast_sip_session_supplement;
/*!
* \internal
* \brief Used by res_pjsip.so to register a session supplement without adding a self reference
*/
void internal_sip_session_register_supplement(struct ast_sip_session_supplement *supplement);
/*!
* \internal
* \brief Used by res_pjsip.so to unregister a session supplement without removing a self reference
*/
int internal_sip_session_unregister_supplement(struct ast_sip_session_supplement *supplement);
/*!
* \internal
* \brief Finds or creates contact_status for a contact