fr->outsub=sal_op_new(fr->lc->sal);
sal_op_set_route(fr->outsub,route);
sal_subscribe_presence(fr->outsub,from,friend);
+ fr->subscribe_active=TRUE;
ms_free(friend);
}
fr->inc_subscribe_pending=FALSE;
}
if (fr->subscribe && fr->subscribe_active==FALSE){
-
+ ms_message("Sending a new SUBSCRIBE");
__linphone_friend_do_subscribe(fr);
}
ms_message("linphone_friend_apply() done.");
}
break;
case EXOSIP_IN_SUBSCRIPTION_NEW:
- ms_message("CALL_SUBSCRIPTION_NEW ");
+ ms_message("CALL_IN_SUBSCRIPTION_NEW ");
sal_exosip_subscription_recv(sal,ev);
break;
case EXOSIP_IN_SUBSCRIPTION_RELEASED:
}
int sal_notify_close(SalOp *op){
- osip_message_t *msg;
+ osip_message_t *msg=NULL;
eXosip_lock();
eXosip_insubscription_build_notify(op->did,EXOSIP_SUBCRSTATE_TERMINATED,DEACTIVATED,&msg);
if (msg!=NULL){
if (identity==NULL) identity=sal_op_get_to(op);
osip_message_set_contact(msg,identity);
eXosip_insubscription_send_request(op->did,msg);
- }else ms_error("sal_notify_close(): could not create notify for incoming subscription.");
+ }else ms_error("sal_notify_close(): could not create notify for incoming subscription"
+ " did=%i, nid=%i",op->did,op->nid);
eXosip_unlock();
return 0;
}
ms_error("Incoming subscription closed but no associated op !");
return;
}
+
+
+ sal_remove_in_subscribe(sal,op);
+ op->nid=-1;
+ op->did=-1;
if (ev->request){
osip_from_to_str(ev->request->from,&tmp);
sal->callbacks.subscribe_closed(op,tmp);
osip_free(tmp);
}
-
- sal_remove_in_subscribe(sal,op);
- op->nid=-1;
- op->did=-1;
}
void sal_exosip_subscription_closed(Sal *sal,eXosip_event_t *ev){
sal_remove_out_subscribe(sal,op);
op->sid=-1;
op->did=-1;
+ sal->callbacks.notify(op,SalSubscribeTerminated, SalPresenceOffline,NULL);
}