diff --git a/include/asterisk/res_pjsip_session.h b/include/asterisk/res_pjsip_session.h
index 0c2b1e326e6932f01ffd716151583e986d0f2143..e2d4fcd27f6ca73a9e420646cb05107e3c940ed5 100644
--- a/include/asterisk/res_pjsip_session.h
+++ b/include/asterisk/res_pjsip_session.h
@@ -533,10 +533,14 @@ void ast_sip_session_unregister_sdp_handler(struct ast_sip_session_sdp_handler *
  * a module could reject an incoming request if desired.
  *
  * \param supplement The supplement to register
+ * \param module Referenced module(NULL safe)
  * \retval 0 Success
  * \retval -1 Failure
  */
-int ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement);
+int ast_sip_session_register_supplement_with_module(struct ast_module *module, struct ast_sip_session_supplement *supplement);
+
+#define ast_sip_session_register_supplement(supplement) \
+		ast_sip_session_register_supplement_with_module(ast_module_info->self, supplement)
 
 /*!
  * \brief Unregister a an supplement to SIP session processing
diff --git a/res/res_pjsip/pjsip_session.c b/res/res_pjsip/pjsip_session.c
index 074ec4e0bc797601b102a3e1469f5e46a4e2266c..2002bbd4e5b6bdf8db238ed47a790c3dc7bbf6ed 100644
--- a/res/res_pjsip/pjsip_session.c
+++ b/res/res_pjsip/pjsip_session.c
@@ -56,10 +56,11 @@ void internal_sip_session_register_supplement(struct ast_sip_session_supplement
 	}
 }
 
-int ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement)
+int ast_sip_session_register_supplement_with_module(struct ast_module *module, struct ast_sip_session_supplement *supplement)
 {
 	internal_sip_session_register_supplement(supplement);
 	internal_res_pjsip_ref();
+	ast_module_shutdown_ref(module);
 
 	return 0;
 }
@@ -118,3 +119,11 @@ int ast_sip_session_add_supplements(struct ast_sip_session *session)
 
 	return 0;
 }
+
+/* This stub is for ABI compatibility. */
+#undef ast_sip_session_register_supplement
+int ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement);
+int ast_sip_session_register_supplement(struct ast_sip_session_supplement *supplement)
+{
+	return ast_sip_session_register_supplement_with_module(NULL, supplement);
+}