Fix when the subscription_terminated callback is called for subscription handlers.

The previous placement would result in the resubscribe() callback called instead of
the subscription_terminated() callback being called when a subscription was ended
via a SUBSCRIBE request. This would result in confusing PJSIP and having it throw
an assertion.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@397955 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Michelson
2013-08-29 22:24:30 +00:00
parent 4017609f8f
commit 26448e0839
+5 -9
View File
@@ -962,15 +962,6 @@ static void pubsub_on_evsub_state(pjsip_evsub *evsub, pjsip_event *event)
return;
}
if (event->type == PJSIP_EVENT_RX_MSG) {
sub->handler->subscription_terminated(sub, event->body.rx_msg.rdata);
}
if (event->type == PJSIP_EVENT_TSX_STATE &&
event->body.tsx_state.type == PJSIP_EVENT_RX_MSG) {
sub->handler->subscription_terminated(sub, event->body.tsx_state.src.rdata);
}
if (sub->handler->subscription_shutdown) {
sub->handler->subscription_shutdown(sub);
}
@@ -1052,6 +1043,11 @@ static void pubsub_on_rx_refresh(pjsip_evsub *evsub, pjsip_rx_data *rdata,
return;
}
if (pjsip_evsub_get_state(sub->evsub) == PJSIP_EVSUB_STATE_TERMINATED) {
sub->handler->subscription_terminated(sub, rdata);
return;
}
sub->handler->resubscribe(sub, rdata, &response_data);
if (!response_data_changed(&response_data)) {