mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-22 05:38:14 +00:00
adapt code to new object ref management
This commit is contained in:
parent
48b1a8be8d
commit
ca59e093f5
6 changed files with 16 additions and 15 deletions
|
|
@ -22,15 +22,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
SalAddress * sal_address_new(const char *uri){
|
||||
belle_sip_header_address_t* result;
|
||||
if (uri) {
|
||||
return (SalAddress *)belle_sip_header_address_parse (uri);
|
||||
result=belle_sip_header_address_parse (uri);
|
||||
} else {
|
||||
result = belle_sip_header_address_new();
|
||||
belle_sip_header_address_set_uri(result,belle_sip_uri_new());
|
||||
return (SalAddress *)result;
|
||||
}
|
||||
belle_sip_object_ref(result);
|
||||
return (SalAddress *)result;
|
||||
}
|
||||
SalAddress * sal_address_clone(const SalAddress *addr){
|
||||
return (SalAddress *) belle_sip_object_clone(BELLE_SIP_OBJECT(addr));
|
||||
return (SalAddress *) belle_sip_object_ref(belle_sip_object_clone(BELLE_SIP_OBJECT(addr)));
|
||||
}
|
||||
const char *sal_address_get_scheme(const SalAddress *addr){
|
||||
belle_sip_header_address_t* header_addr = BELLE_SIP_HEADER_ADDRESS(addr);
|
||||
|
|
|
|||
|
|
@ -425,7 +425,6 @@ int sal_listen_port(Sal *ctx, const char *addr, int port, SalTransport tr, int i
|
|||
belle_sip_listening_point_t* lp = belle_sip_stack_create_listening_point(ctx->stack,addr,port,sal_transport_to_string(tr));
|
||||
if (lp) {
|
||||
result = belle_sip_provider_add_listening_point(ctx->prov,lp);
|
||||
belle_sip_object_unref(lp);
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ belle_sip_request_t* sal_op_build_request(SalOp *op,const char* method);
|
|||
|
||||
|
||||
void sal_op_call_fill_cbs(SalOp*op);
|
||||
void set_or_update_dialog(SalOp* op, const belle_sip_response_event_t* event);
|
||||
void set_or_update_dialog(SalOp* op, belle_sip_dialog_t* dialog);
|
||||
|
||||
void sal_op_set_remote_ua(SalOp*op,belle_sip_message_t* message);
|
||||
int sal_op_send_request(SalOp* op, belle_sip_request_t* request);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ static void sdp_process(SalOp *h){
|
|||
belle_sip_object_unref(h->sdp_answer);
|
||||
}
|
||||
offer_answer_initiate_incoming(h->base.local_media,h->base.remote_media,h->result,h->base.root->one_matching_codec);
|
||||
h->sdp_answer=media_description_to_sdp(h->result);
|
||||
h->sdp_answer=(belle_sdp_session_description_t *)belle_sip_object_ref(media_description_to_sdp(h->result));
|
||||
/*once we have generated the SDP answer, we modify the result description for processing by the upper layer.
|
||||
It should contains media parameters constraint from the remote offer, not our response*/
|
||||
strcpy(h->result->addr,h->base.remote_media->addr);
|
||||
|
|
@ -171,7 +171,7 @@ static void call_response_event(void *op_base, const belle_sip_response_event_t
|
|||
}
|
||||
return;
|
||||
}
|
||||
set_or_update_dialog(op,event);
|
||||
set_or_update_dialog(op,belle_sip_response_event_get_dialog(event));
|
||||
|
||||
/*check if op is terminating*/
|
||||
|
||||
|
|
@ -180,6 +180,7 @@ static void call_response_event(void *op_base, const belle_sip_response_event_t
|
|||
&& (!op->dialog
|
||||
|| belle_sip_dialog_get_state(op->dialog)==BELLE_SIP_DIALOG_NULL
|
||||
|| belle_sip_dialog_get_state(op->dialog)==BELLE_SIP_DIALOG_EARLY)) {
|
||||
/*FIXME if DIALOG_CONFIRM then ACK+BYE*/
|
||||
cancelling_invite(op);
|
||||
|
||||
return;
|
||||
|
|
@ -278,7 +279,7 @@ static void process_sdp_for_invite(SalOp* op,belle_sip_request_t* invite) {
|
|||
static void process_request_event(void *op_base, const belle_sip_request_event_t *event) {
|
||||
SalOp* op = (SalOp*)op_base;
|
||||
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_object_ref(server_transaction);
|
||||
if (server_transaction) belle_sip_object_ref(server_transaction); /*ACK does'nt create srv transaction*/
|
||||
if (op->pending_server_trans) belle_sip_object_unref(op->pending_server_trans);
|
||||
op->pending_server_trans=server_transaction;
|
||||
belle_sdp_session_description_t* sdp;
|
||||
|
|
@ -289,8 +290,7 @@ static void process_request_event(void *op_base, const belle_sip_request_event_t
|
|||
belle_sip_header_t* call_info;
|
||||
|
||||
if (!op->dialog) {
|
||||
op->dialog=belle_sip_provider_create_dialog(op->base.root->prov,BELLE_SIP_TRANSACTION(op->pending_server_trans));
|
||||
belle_sip_dialog_set_application_data(op->dialog,op);
|
||||
set_or_update_dialog(op,belle_sip_provider_create_dialog(op->base.root->prov,BELLE_SIP_TRANSACTION(op->pending_server_trans)));
|
||||
ms_message("new incoming call from [%s] to [%s]",sal_op_get_from(op),sal_op_get_to(op));
|
||||
}
|
||||
dialog_state=belle_sip_dialog_get_state(op->dialog);
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ void sal_op_release(SalOp *op){
|
|||
belle_sip_main_loop_cancel_source(belle_sip_stack_get_main_loop(op->base.root->stack),op->registration_refresh_timer);
|
||||
}
|
||||
if (op->auth_info) sal_auth_info_delete(op->auth_info);
|
||||
if (op->sdp_answer) belle_sip_object_unref(op->sdp_answer);
|
||||
__sal_op_free(op);
|
||||
return ;
|
||||
}
|
||||
|
|
@ -198,13 +199,13 @@ bool_t sal_compute_sal_errors(belle_sip_response_t* response,SalError* sal_err,S
|
|||
return FALSE;
|
||||
}
|
||||
}
|
||||
void set_or_update_dialog(SalOp* op, const belle_sip_response_event_t* event) {
|
||||
void set_or_update_dialog(SalOp* op, belle_sip_dialog_t* dialog) {
|
||||
/*check if dialog has changed*/
|
||||
if (belle_sip_response_event_get_dialog(event) != op->dialog) {
|
||||
ms_message("Dialog set from [%p] to [%p] for op [%p]",op->dialog,belle_sip_response_event_get_dialog(event),op);
|
||||
if (dialog != op->dialog) {
|
||||
ms_message("Dialog set from [%p] to [%p] for op [%p]",op->dialog,dialog,op);
|
||||
/*fixme, shouldn't we cancel previous dialog*/
|
||||
if (op->dialog)belle_sip_object_unref(op->dialog);
|
||||
op->dialog=belle_sip_response_event_get_dialog(event);
|
||||
op->dialog=dialog;
|
||||
belle_sip_dialog_set_application_data(op->dialog,op);
|
||||
belle_sip_object_ref(op->dialog);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -424,7 +424,7 @@ static void presence_response_event(void *op_base, const belle_sip_response_even
|
|||
op->base.root->callbacks.notify_presence(op,SalSubscribeTerminated, SalPresenceOffline,NULL);
|
||||
return;
|
||||
}
|
||||
set_or_update_dialog(op_base,event);
|
||||
set_or_update_dialog(op_base,belle_sip_response_event_get_dialog(event));
|
||||
if (!op->dialog) {
|
||||
ms_message("presence op [%p] receive out of dialog answer [%i]",op,code);
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue