mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-19 12:08:11 +00:00
fix crash with presence. A subscribe refresh must be notified to the upper layer.
This commit is contained in:
parent
cf94b7aca6
commit
02ef798b58
2 changed files with 6 additions and 8 deletions
|
|
@ -225,7 +225,6 @@ static void presence_process_request_event(void *op_base, const belle_sip_reques
|
|||
belle_sip_server_transaction_t* server_transaction = belle_sip_provider_create_server_transaction(op->base.root->prov,belle_sip_request_event_get_request(event));
|
||||
belle_sip_request_t* req = belle_sip_request_event_get_request(event);
|
||||
belle_sip_dialog_state_t dialog_state;
|
||||
belle_sip_header_expires_t* expires = belle_sip_message_get_header_by_type(req,belle_sip_header_expires_t);
|
||||
belle_sip_response_t* resp;
|
||||
const char *method=belle_sip_request_get_method(req);
|
||||
|
||||
|
|
@ -259,13 +258,11 @@ static void presence_process_request_event(void *op_base, const belle_sip_reques
|
|||
if (strcmp("NOTIFY",method)==0) {
|
||||
handle_notify(op, req, belle_sip_request_event_get_dialog(event));
|
||||
} else if (strcmp("SUBSCRIBE",method)==0) {
|
||||
/*either a refresh or an unsubscribe*/
|
||||
if (expires && belle_sip_header_expires_get_expires(expires)>0) {
|
||||
op->base.root->callbacks.subscribe_presence_received(op,sal_op_get_from(op));
|
||||
}else{
|
||||
resp=sal_op_create_response_from_request(op,req,200);
|
||||
belle_sip_server_transaction_send_response(server_transaction,resp);
|
||||
}
|
||||
/*either a refresh or an unsubscribe.
|
||||
If it is a refresh there is nothing to notify to the app. If it is an unSUBSCRIBE, then the dialog
|
||||
will be terminated shortly, and this will be notified to the app through the dialog_terminated callback.*/
|
||||
resp=sal_op_create_response_from_request(op,req,200);
|
||||
belle_sip_server_transaction_send_response(server_transaction,resp);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -278,6 +278,7 @@ static void linphone_friend_invalidate_subscription(LinphoneFriend *lf){
|
|||
void linphone_friend_close_subscriptions(LinphoneFriend *lf){
|
||||
linphone_friend_unsubscribe(lf);
|
||||
ms_list_for_each(lf->insubs, (MSIterateFunc) sal_notify_presence_close);
|
||||
lf->insubs = ms_list_free_with_data(lf->insubs, (MSIterateFunc)sal_op_release);
|
||||
}
|
||||
|
||||
static void _linphone_friend_destroy(LinphoneFriend *lf){
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue