diff --git a/res/res_pjsip_pubsub.c b/res/res_pjsip_pubsub.c index 468346024d8b7dca75cec45c91c9407c59ccd0ab..43f00518e1ff9ab5ac0716c88201bc450ee430e2 100644 --- a/res/res_pjsip_pubsub.c +++ b/res/res_pjsip_pubsub.c @@ -466,16 +466,21 @@ pjsip_dialog *ast_sip_subscription_get_dlg(struct ast_sip_subscription *sub) int ast_sip_subscription_send_request(struct ast_sip_subscription *sub, pjsip_tx_data *tdata) { struct ast_sip_endpoint *endpoint = ast_sip_subscription_get_endpoint(sub); + int res; + + ao2_ref(sub, +1); + res = pjsip_evsub_send_request(ast_sip_subscription_get_evsub(sub), + tdata) == PJ_SUCCESS ? 0 : -1; ast_test_suite_event_notify("SUBSCRIPTION_STATE_SET", "StateText: %s\r\n" "Endpoint: %s\r\n", pjsip_evsub_get_state_name(ast_sip_subscription_get_evsub(sub)), ast_sorcery_object_get_id(endpoint)); + ao2_cleanup(sub); ao2_cleanup(endpoint); - return pjsip_evsub_send_request(ast_sip_subscription_get_evsub(sub), - tdata) == PJ_SUCCESS ? 0 : -1; + return res; } static void subscription_datastore_destroy(void *obj)