From 936a5263cd2b5ff6e3e29b3a3ae65ab11ecd1c50 Mon Sep 17 00:00:00 2001 From: Jacek Konieczny Date: Mon, 17 Jun 2013 11:36:06 +0200 Subject: [PATCH] Version: 3.6.0 libeXosip2 4.0.0 patch based on the one from https://abf.rosalinux.ru/openmandriva/linphone/blob/master/linphone-3.5.2-exosip-4.0.0.patch --- linphone-exosip-4.0.0.patch | 1165 +++++++++++++++++++++++++++++++++++ linphone.spec | 29 +- 2 files changed, 1189 insertions(+), 5 deletions(-) create mode 100644 linphone-exosip-4.0.0.patch diff --git a/linphone-exosip-4.0.0.patch b/linphone-exosip-4.0.0.patch new file mode 100644 index 0000000..80d40dc --- /dev/null +++ b/linphone-exosip-4.0.0.patch @@ -0,0 +1,1165 @@ +diff -dur linphone-3.6.0.orig/coreapi/sal_eXosip2.c linphone-3.6.0/coreapi/sal_eXosip2.c +--- linphone-3.6.0.orig/coreapi/sal_eXosip2.c 2013-06-17 11:11:08.000000000 +0200 ++++ linphone-3.6.0/coreapi/sal_eXosip2.c 2013-06-17 11:21:40.000000000 +0200 +@@ -36,6 +36,8 @@ + static void update_contact_from_response(SalOp *op, osip_message_t *response); + + ++struct eXosip_t *eXo = 0; ++ + void _osip_list_set_empty(osip_list_t *l, void (*freefunc)(void*)){ + void *data; + while(!osip_list_eol(l,0)) { +@@ -46,7 +48,7 @@ + } + + void sal_get_default_local_ip(Sal *sal, int address_family,char *ip, size_t iplen){ +- if (eXosip_guess_localip(address_family,ip,iplen)<0){ ++ if (eXosip_guess_localip(eXo,address_family,ip,iplen)<0){ + /*default to something */ + strncpy(ip,address_family==AF_INET6 ? "::1" : "127.0.0.1",iplen); + ms_error("Could not find default routable ip address !"); +@@ -192,7 +194,7 @@ + eXosip_event_free(op->pending_auth); + if (op->rid!=-1){ + sal_remove_register(op->base.root,op->rid); +- eXosip_register_remove(op->rid); ++ eXosip_register_remove(eXo,op->rid); + } + if (op->cid!=-1){ + ms_message("Cleaning cid %i",op->cid); +@@ -273,7 +275,8 @@ + osip_trace_initialize_func (OSIP_INFO4,&_osip_trace_func); + firsttime=FALSE; + } +- eXosip_init(); ++ eXo=eXosip_malloc(); ++ eXosip_init(eXo); + sal=ms_new0(Sal,1); + sal->keepalive_period=30; + sal->double_reg=TRUE; +@@ -290,7 +293,8 @@ + } + + void sal_uninit(Sal* sal){ +- eXosip_quit(); ++ eXosip_quit(eXo); ++ free(eXo); + if (sal->rootCa) + ms_free(sal->rootCa); + ms_free(sal); +@@ -348,8 +352,8 @@ + + int sal_unlisten_ports(Sal *ctx){ + if (ctx->running){ +- eXosip_quit(); +- eXosip_init(); ++ eXosip_quit(eXo); ++ eXosip_init(eXo); + ctx->running=FALSE; + } + return 0; +@@ -359,7 +363,7 @@ + #ifdef HAVE_EXOSIP_RESET_TRANSPORTS + if (ctx->running){ + ms_message("Exosip transports reset."); +- eXosip_reset_transports(); ++ eXosip_reset_transports(eXo); + } + return 0; + #else +@@ -374,10 +378,10 @@ + eXosip_tls_ctx_t tlsCtx; + memset(&tlsCtx, 0, sizeof(tlsCtx)); + snprintf(tlsCtx.root_ca_cert, sizeof(tlsCtx.client.cert), "%s", ctx->rootCa); +- eXosip_set_tls_ctx(&tlsCtx); ++ eXosip_set_option(eXo, EXOSIP_OPT_SET_TLS_CERTIFICATES_INFO, (void*)&tlsCtx); + } + #ifdef HAVE_EXOSIP_TLS_VERIFY_CERTIFICATE +- eXosip_tls_verify_certificate(ctx->verify_server_certs); ++ eXosip_set_option(eXo, EXOSIP_OPT_SET_TLS_VERIFY_CERTIFICATE, (void*)&ctx->verify_server_certs); + #endif + #ifdef HAVE_EXOSIP_TLS_VERIFY_CN + eXosip_tls_verify_cn(ctx->verify_server_cn); +@@ -402,13 +406,13 @@ + switch (tr) { + case SalTransportUDP: + proto=IPPROTO_UDP; +- eXosip_set_option (EXOSIP_OPT_UDP_KEEP_ALIVE, &keepalive); ++ eXosip_set_option (eXo, EXOSIP_OPT_UDP_KEEP_ALIVE, &keepalive); + break; + case SalTransportTCP: + case SalTransportTLS: + proto= IPPROTO_TCP; + if (!ctx->tcp_tls_keepalive) keepalive=-1; +- eXosip_set_option (EXOSIP_OPT_UDP_KEEP_ALIVE,&keepalive); ++ eXosip_set_option (eXo, EXOSIP_OPT_UDP_KEEP_ALIVE,&keepalive); + set_tls_options(ctx); + break; + default: +@@ -416,9 +420,9 @@ + } + /*see if it looks like an IPv6 address*/ + int use_rports = ctx->use_rports; // Copy char to int to avoid bad alignment +- eXosip_set_option(EXOSIP_OPT_USE_RPORT,&use_rports); +- int dont_use_101 = !ctx->use_101; // Copy char to int to avoid bad alignment +- eXosip_set_option(EXOSIP_OPT_DONT_SEND_101,&dont_use_101); ++ eXosip_set_option(eXo, EXOSIP_OPT_USE_RPORT,&use_rports); ++ //int dont_use_101 = !ctx->use_101; // Copy char to int to avoid bad alignment ++ //eXosip_set_option(eXo, EXOSIP_OPT_DONT_SEND_101,&dont_use_101); // FIXME is this possible with eXosip2 >= 4.0.0? + sal_set_dscp(ctx,ctx->dscp); + sal_use_dates(ctx,ctx->add_dates); + +@@ -429,14 +433,14 @@ + ms_fatal("SIP over DTLS is not supported yet."); + return -1; + } +- err=eXosip_listen_addr(proto, addr, port, ipv6 ? PF_INET6 : PF_INET, is_secure); ++ err=eXosip_listen_addr(eXo, proto, addr, port, ipv6 ? PF_INET6 : PF_INET, is_secure); + ctx->running=TRUE; + return err; + } + + ortp_socket_t sal_get_socket(Sal *ctx){ + #ifdef HAVE_EXOSIP_GET_SOCKET +- return eXosip_get_socket(IPPROTO_UDP); ++ return eXosip_get_socket(eXo, IPPROTO_UDP); + #else + ms_warning("Sorry, eXosip does not have eXosip_get_socket() method"); + return -1; +@@ -444,7 +448,7 @@ + } + + void sal_set_user_agent(Sal *ctx, const char *user_agent){ +- eXosip_set_user_agent(user_agent); ++ eXosip_set_user_agent(eXo, user_agent); + } + + void sal_use_session_timers(Sal *ctx, int expires){ +@@ -472,7 +476,7 @@ + #ifdef EXOSIP_OPT_REGISTER_WITH_DATE + { + int tmp=enabled; +- eXosip_set_option(EXOSIP_OPT_REGISTER_WITH_DATE,&tmp); ++ eXosip_set_option(eXo,EXOSIP_OPT_REGISTER_WITH_DATE,&tmp); + } + #else + if (enabled) ms_warning("Exosip does not support EXOSIP_OPT_REGISTER_WITH_DATE option."); +@@ -500,7 +504,7 @@ + void sal_verify_server_certificates(Sal *ctx, bool_t verify){ + ctx->verify_server_certs=verify; + #ifdef HAVE_EXOSIP_TLS_VERIFY_CERTIFICATE +- eXosip_tls_verify_certificate(verify); ++ eXosip_set_option(eXo, EXOSIP_OPT_SET_TLS_VERIFY_CERTIFICATE, (void*)&verify); + #endif + } + +@@ -638,7 +642,7 @@ + h->terminated = FALSE; + + route = sal_op_get_route(h); +- err=eXosip_call_build_initial_invite(&invite,to,from,route,"Phone call"); ++ err=eXosip_call_build_initial_invite(eXo,&invite,to,from,route,"Phone call"); + if (err!=0){ + ms_error("Could not create call. Error %d (from=%s to=%s route=%s)", + err, from, to, route); +@@ -664,9 +668,9 @@ + osip_message_set_header(invite,"Referred-By",h->referred_by); + } + +- eXosip_lock(); +- err=eXosip_call_send_initial_invite(invite); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ err=eXosip_call_send_initial_invite(eXo,invite); ++ eXosip_unlock(eXo); + h->cid=err; + if (err<0){ + ms_error("Fail to send invite ! Error code %d", err); +@@ -688,8 +692,8 @@ + /*if early media send also 180 and 183 */ + if (early_media){ + msg=NULL; +- eXosip_lock(); +- eXosip_call_build_answer(h->tid,183,&msg); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,h->tid,183,&msg); + if (msg){ + sdp_process(h); + if (h->sdp_answer){ +@@ -697,13 +701,13 @@ + sdp_message_free(h->sdp_answer); + h->sdp_answer=NULL; + } +- eXosip_call_send_answer(h->tid,183,msg); ++ eXosip_call_send_answer(eXo,h->tid,183,msg); + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + }else{ +- eXosip_lock(); +- eXosip_call_send_answer(h->tid,180,NULL); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_send_answer(eXo,h->tid,180,NULL); ++ eXosip_unlock(eXo); + } + return 0; + } +@@ -712,7 +716,7 @@ + osip_message_t *msg; + const char *contact=sal_op_get_contact(h); + /* sends a 200 OK */ +- int err=eXosip_call_build_answer(h->tid,200,&msg); ++ int err=eXosip_call_build_answer(eXo,h->tid,200,&msg); + if (err<0 || msg==NULL){ + ms_error("Fail to build answer for call: err=%i",err); + return -1; +@@ -741,38 +745,38 @@ + }else{ + ms_error("You are accepting a call but not defined any media capabilities !"); + } +- eXosip_call_send_answer(h->tid,200,msg); ++ eXosip_call_send_answer(eXo,h->tid,200,msg); + return 0; + } + + int sal_call_decline(SalOp *h, SalReason reason, const char *redirect){ + if (reason==SalReasonBusy){ +- eXosip_lock(); +- eXosip_call_send_answer(h->tid,486,NULL); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_send_answer(eXo,h->tid,486,NULL); ++ eXosip_unlock(eXo); + } + else if (reason==SalReasonTemporarilyUnavailable){ +- eXosip_lock(); +- eXosip_call_send_answer(h->tid,480,NULL); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_send_answer(eXo,h->tid,480,NULL); ++ eXosip_unlock(eXo); + }else if (reason==SalReasonDoNotDisturb){ +- eXosip_lock(); +- eXosip_call_send_answer(h->tid,600,NULL); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_send_answer(eXo,h->tid,600,NULL); ++ eXosip_unlock(eXo); + }else if (reason==SalReasonMedia){ +- eXosip_lock(); +- eXosip_call_send_answer(h->tid,415,NULL); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_send_answer(eXo,h->tid,415,NULL); ++ eXosip_unlock(eXo); + }else if (redirect!=NULL && reason==SalReasonRedirect){ + osip_message_t *msg; + int code; + if (strstr(redirect,"sip:")!=0) code=302; + else code=380; +- eXosip_lock(); +- eXosip_call_build_answer(h->tid,code,&msg); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,h->tid,code,&msg); + osip_message_set_contact(msg,redirect); +- eXosip_call_send_answer(h->tid,code,msg); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,h->tid,code,msg); ++ eXosip_unlock(eXo); + }else sal_call_terminate(h); + return 0; + } +@@ -798,18 +802,18 @@ + + static int send_notify_for_refer(int did, const char *sipfrag){ + osip_message_t *msg; +- eXosip_lock(); +- eXosip_call_build_notify(did,EXOSIP_SUBCRSTATE_ACTIVE,&msg); ++ eXosip_lock(eXo); ++ eXosip_call_build_notify(eXo,did,EXOSIP_SUBCRSTATE_ACTIVE,&msg); + if (msg==NULL){ +- eXosip_unlock(); ++ eXosip_unlock(eXo); + ms_warning("Could not build NOTIFY for refer."); + return -1; + } + osip_message_set_content_type(msg,"message/sipfrag"); + osip_message_set_header(msg,"Event","refer"); + osip_message_set_body(msg,sipfrag,strlen(sipfrag)); +- eXosip_call_send_request(did,msg); +- eXosip_unlock(); ++ eXosip_call_send_request(eXo,did,msg); ++ eXosip_unlock(eXo); + return 0; + } + +@@ -845,7 +849,7 @@ + sal_op_set_to(op,to); + sal_exosip_fix_route(op); + +- eXosip_options_build_request (&options, sal_op_get_to(op), ++ eXosip_options_build_request (eXo, &options, sal_op_get_to(op), + sal_op_get_from(op),sal_op_get_route(op)); + if (options){ + if (op->base.root->session_expires!=0){ +@@ -853,7 +857,7 @@ + osip_message_set_supported(options, "timer"); + } + sal_add_other(sal_op_get_sal(op),op,options); +- return eXosip_options_send_request(options); ++ return eXosip_options_send_request(eXo, options); + } + return -1; + } +@@ -861,11 +865,11 @@ + int sal_call_refer(SalOp *h, const char *refer_to){ + osip_message_t *msg=NULL; + int err=0; +- eXosip_lock(); +- eXosip_call_build_refer(h->did,refer_to, &msg); +- if (msg) err=eXosip_call_send_request(h->did, msg); ++ eXosip_lock(eXo); ++ eXosip_call_build_refer(eXo,h->did,refer_to, &msg); ++ if (msg) err=eXosip_call_send_request(eXo,h->did, msg); + else err=-1; +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return err; + } + +@@ -873,26 +877,26 @@ + osip_message_t *msg=NULL; + char referto[256]={0}; + int err=0; +- eXosip_lock(); +- if (eXosip_call_get_referto(other_call_h->did,referto,sizeof(referto)-1)!=0){ ++ eXosip_lock(eXo); ++ if (eXosip_call_get_referto(eXo,other_call_h->did,referto,sizeof(referto)-1)!=0){ + ms_error("eXosip_call_get_referto() failed for did=%i",other_call_h->did); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return -1; + } +- eXosip_call_build_refer(h->did,referto, &msg); ++ eXosip_call_build_refer(eXo,h->did,referto, &msg); + osip_message_set_header(msg,"Referred-By",h->base.from); +- if (msg) err=eXosip_call_send_request(h->did, msg); ++ if (msg) err=eXosip_call_send_request(eXo,h->did, msg); + else err=-1; +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return err; + } + + SalOp *sal_call_get_replaces(SalOp *h){ + if (h!=NULL && h->replaces!=NULL){ + int cid; +- eXosip_lock(); +- cid=eXosip_call_find_by_replaces(h->replaces); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ cid=eXosip_call_find_by_replaces(eXo,h->replaces); ++ eXosip_unlock(eXo); + if (cid>0){ + SalOp *ret=sal_find_call(h->base.root,cid); + return ret; +@@ -906,17 +910,17 @@ + char dtmf_body[128]; + char clen[10]; + +- eXosip_lock(); +- eXosip_call_build_info(h->did,&msg); ++ eXosip_lock(eXo); ++ eXosip_call_build_info(eXo,h->did,&msg); + if (msg){ + snprintf(dtmf_body, sizeof(dtmf_body), "Signal=%c\r\nDuration=250\r\n", dtmf); + osip_message_set_body(msg,dtmf_body,strlen(dtmf_body)); + osip_message_set_content_type(msg,"application/dtmf-relay"); + snprintf(clen,sizeof(clen),"%lu",(unsigned long)strlen(dtmf_body)); + osip_message_set_content_length(msg,clen); +- eXosip_call_send_request(h->did,msg); ++ eXosip_call_send_request(eXo,h->did,msg); + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return 0; + } + +@@ -925,23 +929,23 @@ + if (info->userid==NULL || info->userid[0]=='\0') userid=info->username; + else userid=info->userid; + ms_message("Authentication info for username [%s], id[%s], realm [%s] added to eXosip", info->username,userid, info->realm); +- eXosip_add_authentication_info (info->username,userid, ++ eXosip_add_authentication_info (eXo,info->username,userid, + info->password, NULL,info->realm); + } + /* + * Just for symmetry ;-) + */ + static void pop_auth_from_exosip() { +- eXosip_clear_authentication_info(); ++ eXosip_clear_authentication_info(eXo); + } + + int sal_call_terminate(SalOp *h){ + int err; + if (h == NULL) return -1; + if (h->auth_info) push_auth_to_exosip(h->auth_info); +- eXosip_lock(); +- err=eXosip_call_terminate(h->cid,h->did); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ err=eXosip_call_terminate(eXo,h->cid,h->did); ++ eXosip_unlock(eXo); + if (!h->base.root->reuse_authorization) pop_auth_from_exosip(); + if (err!=0){ + ms_warning("Exosip could not terminate the call: cid=%i did=%i", h->cid,h->did); +@@ -967,9 +971,9 @@ + }; + */ + update_contact_from_response(h,h->pending_auth->response); +- eXosip_lock(); +- eXosip_default_action(h->pending_auth); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_default_action(eXo,h->pending_auth); ++ eXosip_unlock(eXo); + ms_message("eXosip_default_action() done"); + if (!h->base.root->reuse_authorization) pop_auth_from_exosip(); + +@@ -1210,9 +1214,9 @@ + + if (op==NULL || op->terminated==TRUE) { + ms_warning("This call has been canceled."); +- eXosip_lock(); +- eXosip_call_terminate(ev->cid,ev->did); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_terminate(eXo,ev->cid,ev->did); ++ eXosip_unlock(eXo); + return -1; + } + if (ev->did>0) +@@ -1249,9 +1253,9 @@ + + if (op==NULL || op->terminated==TRUE) { + ms_warning("This call has been already terminated."); +- eXosip_lock(); +- eXosip_call_terminate(ev->cid,ev->did); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_terminate(eXo,ev->cid,ev->did); ++ eXosip_unlock(eXo); + return ; + } + +@@ -1266,12 +1270,12 @@ + sdp_message_free(sdp); + if (op->base.local_media) sdp_process(op); + } +- eXosip_call_build_ack(ev->did,&msg); ++ eXosip_call_build_ack(eXo,ev->did,&msg); + if (msg==NULL) { + ms_warning("This call has been already terminated."); +- eXosip_lock(); +- eXosip_call_terminate(ev->cid,ev->did); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_call_terminate(eXo,ev->cid,ev->did); ++ eXosip_unlock(eXo); + return ; + } + contact=sal_op_get_contact(op); +@@ -1284,7 +1288,7 @@ + sdp_message_free(op->sdp_answer); + op->sdp_answer=NULL; + } +- eXosip_call_send_ack(ev->did,msg); ++ eXosip_call_send_ack(eXo,ev->did,msg); + sal->callbacks.call_accepted(op); + } + +@@ -1458,7 +1462,7 @@ + sr=SalReasonMedia; + break; + case 422: +- eXosip_default_action(ev); ++ eXosip_default_action(eXo,ev); + return TRUE; + break; + case 480: +@@ -1508,17 +1512,17 @@ + + char clen[10]; + +- eXosip_lock(); +- eXosip_call_build_info(h->did,&msg); ++ eXosip_lock(eXo); ++ eXosip_call_build_info(eXo,h->did,&msg); + if (msg){ + osip_message_set_body(msg,info_body,strlen(info_body)); + osip_message_set_content_type(msg,"application/media_control+xml"); + snprintf(clen,sizeof(clen),"%lu",(unsigned long)strlen(info_body)); + osip_message_set_content_length(msg,clen); +- eXosip_call_send_request(h->did,msg); ++ eXosip_call_send_request(eXo,h->did,msg); + ms_message("Sending VFU request !"); + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + } + + static void process_media_control_xml(Sal *sal, eXosip_event_t *ev){ +@@ -1537,20 +1541,20 @@ + ms_message("Receiving VFU request !"); + if (sal->callbacks.vfu_request){ + sal->callbacks.vfu_request(op); +- eXosip_call_build_answer(ev->tid,200,&ans); ++ eXosip_call_build_answer(eXo,ev->tid,200,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,200,ans); ++ eXosip_call_send_answer(eXo,ev->tid,200,ans); + return; + } + } + /*in all other cases we must say it is not implemented.*/ + { + osip_message_t *ans=NULL; +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,501,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,501,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,501,ans); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,ev->tid,501,ans); ++ eXosip_unlock(eXo); + } + } + +@@ -1579,11 +1583,11 @@ + sal->callbacks.dtmf_received(op, tmp[0]); + } + } +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,200,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,200,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,200,ans); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,ev->tid,200,ans); ++ eXosip_unlock(eXo); + } + } + +@@ -1628,11 +1632,11 @@ + osip_free(tmp); + osip_from_free(from); + } +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,202,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,202,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,202,ans); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,ev->tid,202,ans); ++ eXosip_unlock(eXo); + } + else + { +@@ -1677,11 +1681,11 @@ + } + } + /*answer that we received the notify*/ +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,200,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,200,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,200,ans); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,ev->tid,200,ans); ++ eXosip_unlock(eXo); + osip_free(from); + } + +@@ -1699,28 +1703,28 @@ + else { + ms_message("Unhandled SIP INFO."); + /*send an "Not implemented" answer*/ +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,501,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,501,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,501,ans); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,ev->tid,501,ans); ++ eXosip_unlock(eXo); + } + }else{ + /*empty SIP INFO, probably to test we are alive. Send an empty answer*/ +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,200,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,200,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,200,ans); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,ev->tid,200,ans); ++ eXosip_unlock(eXo); + } + }else if(MSG_IS_MESSAGE(ev->request)){ + /* SIP messages could be received into call */ + text_received(sal, ev); +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,200,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,200,&ans); + if (ans) +- eXosip_call_send_answer(ev->tid,200,ans); +- eXosip_unlock(); ++ eXosip_call_send_answer(eXo,ev->tid,200,ans); ++ eXosip_unlock(eXo); + }else if(MSG_IS_REFER(ev->request)){ + SalOp *op=find_op(sal,ev); + +@@ -1729,13 +1733,13 @@ + }else if(MSG_IS_NOTIFY(ev->request)){ + process_notify(sal,ev); + }else if (MSG_IS_OPTIONS(ev->request)){ +- eXosip_lock(); +- eXosip_call_build_answer(ev->tid,200,&ans); ++ eXosip_lock(eXo); ++ eXosip_call_build_answer(eXo,ev->tid,200,&ans); + if (ans){ + fill_options_answer(ans); +- eXosip_call_send_answer(ev->tid,200,ans); ++ eXosip_call_send_answer(eXo,ev->tid,200,ans); + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + } + }else ms_warning("call_message_new: No request ?"); + } +@@ -1743,11 +1747,11 @@ + static void inc_update(Sal *sal, eXosip_event_t *ev){ + osip_message_t *msg=NULL; + ms_message("Processing incoming UPDATE"); +- eXosip_lock(); +- eXosip_message_build_answer(ev->tid,200,&msg); ++ eXosip_lock(eXo); ++ eXosip_message_build_answer(eXo,ev->tid,200,&msg); + if (msg!=NULL) +- eXosip_message_send_answer(ev->tid,200,msg); +- eXosip_unlock(); ++ eXosip_message_send_answer(eXo,ev->tid,200,msg); ++ eXosip_unlock(eXo); + } + + static bool_t comes_from_local_if(osip_message_t *msg){ +@@ -1874,12 +1878,12 @@ + if (ev->request==NULL) return; + if (strcmp(ev->request->sip_method,"MESSAGE")==0){ + text_received(sal,ev); +- eXosip_message_send_answer(ev->tid,200,NULL); ++ eXosip_message_send_answer(eXo,ev->tid,200,NULL); + }else if (strcmp(ev->request->sip_method,"OPTIONS")==0){ + osip_message_t *options=NULL; +- eXosip_options_build_answer(ev->tid,200,&options); ++ eXosip_options_build_answer(eXo,ev->tid,200,&options); + fill_options_answer(options); +- eXosip_options_send_answer(ev->tid,200,options); ++ eXosip_options_send_answer(eXo,ev->tid,200,options); + }else if (strncmp(ev->request->sip_method, "REFER", 5) == 0){ + ms_message("Receiving REFER request !"); + if (comes_from_local_if(ev->request)) { +@@ -1896,7 +1900,7 @@ + osip_free(tmp); + } + /*answer with a 501 Not implemented*/ +- eXosip_message_send_answer(ev->tid,501,NULL); ++ eXosip_message_send_answer(eXo,ev->tid,501,NULL); + } + } + +@@ -2007,25 +2011,25 @@ + ms_message("Contact do not match, resending register."); + else return FALSE; + +- eXosip_lock(); +- eXosip_register_build_register(op->rid,op->expires,&msg); ++ eXosip_lock(eXo); ++ eXosip_register_build_register(eXo,op->rid,op->expires,&msg); + if (msg==NULL){ +- eXosip_unlock(); ++ eXosip_unlock(eXo); + ms_warning("Fail to create a contact updated register."); + return FALSE; + } + if (fix_message_contact(op,msg,last_answer,op->base.root->expire_old_contact)) { +- eXosip_register_send_register(op->rid,msg); +- eXosip_unlock(); ++ eXosip_register_send_register(eXo,op->rid,msg); ++ eXosip_unlock(eXo); + ms_message("Resending new register with updated contact"); + update_contact_from_response(op,last_answer); + return TRUE; + } else { + ms_warning("Fail to send updated register."); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return FALSE; + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return FALSE; + } + +@@ -2078,10 +2082,10 @@ + if (val>op->expires) + op->expires=val; + }else op->expires*=2; +- eXosip_lock(); +- eXosip_register_build_register(op->rid,op->expires,&msg); +- eXosip_register_send_register(op->rid,msg); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_register_build_register(eXo,op->rid,op->expires,&msg); ++ eXosip_register_send_register(eXo,op->rid,msg); ++ eXosip_unlock(eXo); + } + break; + case 606: /*Not acceptable, workaround for proxies that don't like private addresses +@@ -2156,7 +2160,9 @@ + ms_message("CALL_CLOSED or CANCELLED\n"); + call_terminated(sal,ev); + break; ++#ifdef EXOSIP_CALL_TIMEOUT + case EXOSIP_CALL_TIMEOUT: ++#endif + case EXOSIP_CALL_NOANSWER: + ms_message("CALL_TIMEOUT or NOANSWER\n"); + return call_failure(sal,ev); +@@ -2184,7 +2190,7 @@ + break; + case EXOSIP_CALL_REDIRECTED: + ms_message("CALL_REDIRECTED"); +- eXosip_default_action(ev); ++ eXosip_default_action(eXo, ev); + break; + case EXOSIP_CALL_PROCEEDING: + ms_message("CALL_PROCEEDING"); +@@ -2213,13 +2219,17 @@ + ms_message("CALL_IN_SUBSCRIPTION_NEW "); + sal_exosip_subscription_recv(sal,ev); + break; ++#ifdef EXOSIP_IN_SUBSCRIPTION_RELEASED + case EXOSIP_IN_SUBSCRIPTION_RELEASED: + ms_message("CALL_SUBSCRIPTION_NEW "); + sal_exosip_in_subscription_closed(sal,ev); + break; ++#endif ++#ifdef EXOSIP_SUBSCRIPTION_UPDATE + case EXOSIP_SUBSCRIPTION_UPDATE: + ms_message("CALL_SUBSCRIPTION_UPDATE"); + break; ++#endif + case EXOSIP_SUBSCRIPTION_NOTIFY: + ms_message("CALL_SUBSCRIPTION_NOTIFY"); + sal_exosip_notify_recv(sal,ev); +@@ -2228,10 +2238,6 @@ + ms_message("EXOSIP_SUBSCRIPTION_ANSWERED, ev->sid=%i, ev->did=%i\n",ev->sid,ev->did); + sal_exosip_subscription_answered(sal,ev); + break; +- case EXOSIP_SUBSCRIPTION_CLOSED: +- ms_message("EXOSIP_SUBSCRIPTION_CLOSED\n"); +- sal_exosip_subscription_closed(sal,ev); +- break; + case EXOSIP_SUBSCRIPTION_REQUESTFAILURE: /**< announce a request failure */ + if (ev->response && (ev->response->status_code == 407 || ev->response->status_code == 401)){ + return process_authentication(sal,ev); +@@ -2266,7 +2272,7 @@ + case 401: + return process_authentication(sal,ev); + case 412: { +- eXosip_automatic_action (); ++ eXosip_automatic_action (eXo); + return 1; + } + } +@@ -2282,21 +2288,21 @@ + + int sal_iterate(Sal *sal){ + eXosip_event_t *ev; +- while((ev=eXosip_event_wait(0,0))!=NULL){ ++ while((ev=eXosip_event_wait(eXo,0,0))!=NULL){ + if (process_event(sal,ev)) + eXosip_event_free(ev); + } + #ifdef HAVE_EXOSIP_TRYLOCK + if (eXosip_trylock()==0){ +- eXosip_automatic_refresh(); +- eXosip_unlock(); ++ eXosip_automatic_refresh(eXo); ++ eXosip_unlock(eXo); + }else{ + ms_warning("eXosip_trylock busy."); + } + #else +- eXosip_lock(); +- eXosip_automatic_refresh(); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_automatic_refresh(eXo); ++ eXosip_unlock(eXo); + #endif + return 0; + } +@@ -2361,26 +2367,26 @@ + } + if (uri) ms_free(uri); + sal_address_destroy(from_parsed); +- eXosip_lock(); +- h->rid=eXosip_register_build_initial_register(from,domain,NULL,expires,&msg); ++ eXosip_lock(eXo); ++ h->rid=eXosip_register_build_initial_register(eXo,from,domain,NULL,expires,&msg); + if (msg){ + if (contact) register_set_contact(msg,contact); + sal_message_add_route(msg,proxy); + sal_add_register(h->base.root,h); + }else{ + ms_error("Could not build initial register."); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return -1; + } + }else{ +- eXosip_lock(); +- eXosip_register_build_register(h->rid,expires,&msg); ++ eXosip_lock(eXo); ++ eXosip_register_build_register(eXo,h->rid,expires,&msg); + sal_message_add_route(msg,proxy); + } + if (msg){ +- eXosip_register_send_register(h->rid,msg); ++ eXosip_register_send_register(eXo,h->rid,msg); + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + h->expires=expires; + return (msg != NULL) ? 0 : -1; + } +@@ -2399,7 +2405,7 @@ + /*iOS hack: in the keep alive handler, we have no more than 10 seconds to refresh registers, otherwise the application is suspended forever. + * In order to prevent this case that can occur when the exosip thread is busy with DNS while network isn't in a good shape, we try to take + * the exosip lock in a non blocking way, and give up if it takes too long*/ +- while (eXosip_trylock()!=0){ ++ while (eXosip_trylock(eXo)!=0){ + ms_usleep(100000); + tries++; + if (tries>30) {/*after 3 seconds, give up*/ +@@ -2409,26 +2415,26 @@ + } + } + #else +- eXosip_lock(); ++ eXosip_lock(eXo); + #endif +- eXosip_register_build_register(op->rid,expires,&msg); ++ eXosip_register_build_register(eXo,op->rid,expires,&msg); + if (msg!=NULL){ + if (contact) register_set_contact(msg,contact); + sal_message_add_route(msg,sal_op_get_route(op)); +- eXosip_register_send_register(op->rid,msg); ++ eXosip_register_send_register(eXo,op->rid,msg); + }else ms_error("Could not build REGISTER refresh message."); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return (msg != NULL) ? 0 : -1; + } + + + int sal_unregister(SalOp *h){ + osip_message_t *msg=NULL; +- eXosip_lock(); +- eXosip_register_build_register(h->rid,0,&msg); +- if (msg) eXosip_register_send_register(h->rid,msg); ++ eXosip_lock(eXo); ++ eXosip_register_build_register(eXo,h->rid,0,&msg); ++ if (msg) eXosip_register_send_register(eXo,h->rid,msg); + else ms_warning("Could not build unREGISTER !"); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return 0; + } + +@@ -2598,7 +2604,7 @@ + default: + break; + } +- eXosip_set_option (EXOSIP_OPT_UDP_KEEP_ALIVE, &ctx->keepalive_period); ++ eXosip_set_option (eXo, EXOSIP_OPT_UDP_KEEP_ALIVE, &ctx->keepalive_period); + } + unsigned int sal_get_keepalive_period(Sal *ctx) { + return ctx->keepalive_period; +@@ -2636,12 +2642,12 @@ + int err=0; + osip_message_t *reinvite=NULL; + +- eXosip_lock(); +- if(eXosip_call_build_request(h->did,"INVITE",&reinvite) != 0 || reinvite==NULL){ +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ if(eXosip_call_build_request(eXo,h->did,"INVITE",&reinvite) != 0 || reinvite==NULL){ ++ eXosip_unlock(eXo); + return -1; + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + osip_message_set_subject(reinvite,subject); + osip_message_set_allow(reinvite, "INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO"); + if (h->base.contact){ +@@ -2656,9 +2662,9 @@ + h->sdp_offering=TRUE; + set_sdp_from_desc(reinvite,h->base.local_media); + }else h->sdp_offering=FALSE; +- eXosip_lock(); +- err = eXosip_call_send_request(h->did, reinvite); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ err = eXosip_call_send_request(eXo, h->did, reinvite); ++ eXosip_unlock(eXo); + return err; + } + +diff -dur linphone-3.6.0.orig/coreapi/sal_eXosip2_presence.c linphone-3.6.0/coreapi/sal_eXosip2_presence.c +--- linphone-3.6.0.orig/coreapi/sal_eXosip2_presence.c 2013-06-17 11:11:08.000000000 +0200 ++++ linphone-3.6.0/coreapi/sal_eXosip2_presence.c 2013-06-17 11:12:12.000000000 +0200 +@@ -32,6 +32,8 @@ + */ + static presence_type_t presence_style = PIDF; + ++extern struct eXosip_t *eXo; ++ + SalOp * sal_find_out_subscribe(Sal *sal, int sid){ + const MSList *elem; + SalOp *op; +@@ -113,8 +115,8 @@ + sal_op_set_to(op,to); + + sal_exosip_fix_route(op); +- eXosip_lock(); +- eXosip_message_build_request(&sip,"MESSAGE",sal_op_get_to(op), ++ eXosip_lock(eXo); ++ eXosip_message_build_request(eXo,&sip,"MESSAGE",sal_op_get_to(op), + sal_op_get_from(op),sal_op_get_route(op)); + if (sip!=NULL){ + sal_exosip_add_custom_headers(sip,op->base.custom_headers); +@@ -122,30 +124,30 @@ + osip_message_set_content_type(sip,content_type); + if (msg) osip_message_set_body(sip,msg,strlen(msg)); + sal_add_other(op->base.root,op,sip); +- eXosip_message_send_request(sip); ++ eXosip_message_send_request(eXo,sip); + }else{ + ms_error("Could not build MESSAGE request !"); + } +- eXosip_unlock(); ++ eXosip_unlock(eXo); + } + else + { + /* we are currently in communication with the destination */ +- eXosip_lock(); ++ eXosip_lock(eXo); + //First we generate an INFO message to get the current call_id and a good cseq +- eXosip_call_build_request(op->did,"MESSAGE",&sip); ++ eXosip_call_build_request(eXo,op->did,"MESSAGE",&sip); + if(sip == NULL) + { + ms_warning("could not get a build info to send MESSAGE, maybe no previous call established ?"); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return -1; + } + sal_exosip_add_custom_headers(sip,op->base.custom_headers); + msg_add_current_date(sip); + osip_message_set_content_type(sip,content_type); + if (msg) osip_message_set_body(sip,msg,strlen(msg)); +- eXosip_call_send_request(op->did,sip); +- eXosip_unlock(); ++ eXosip_call_send_request(eXo,op->did,sip); ++ eXosip_unlock(eXo); + } + return 0; + } +@@ -161,20 +163,20 @@ + if (to) + sal_op_set_to(op,to); + sal_exosip_fix_route(op); +- eXosip_lock(); +- eXosip_subscribe_build_initial_request(&msg,sal_op_get_to(op),sal_op_get_from(op), ++ eXosip_lock(eXo); ++ eXosip_subscribe_build_initial_request(eXo,&msg,sal_op_get_to(op),sal_op_get_from(op), + sal_op_get_route(op),"presence",600); + if (msg==NULL){ + ms_error("Could not build subscribe request to %s",to); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return -1; + } + if (op->base.contact){ + _osip_list_set_empty(&msg->contacts,(void (*)(void*))osip_contact_free); + osip_message_set_contact(msg,op->base.contact); + } +- op->sid=eXosip_subscribe_send_initial_request(msg); +- eXosip_unlock(); ++ op->sid=eXosip_subscribe_send_initial_request(eXo,msg); ++ eXosip_unlock(eXo); + if (op->sid==-1){ + osip_message_free(msg); + return -1; +@@ -189,39 +191,39 @@ + ms_error("cannot unsubscribe, no dialog !"); + return -1; + } +- eXosip_lock(); +- eXosip_subscribe_build_refresh_request(op->did,&msg); ++ eXosip_lock(eXo); ++ eXosip_subscribe_build_refresh_request(eXo,op->did,&msg); + if (msg){ + osip_message_set_expires(msg,"0"); +- eXosip_subscribe_send_refresh_request(op->did,msg); ++ eXosip_subscribe_send_refresh_request(eXo,op->did,msg); + }else ms_error("Could not build subscribe refresh request ! op->sid=%i, op->did=%i", + op->sid,op->did); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return 0; + } + + int sal_subscribe_accept(SalOp *op){ + osip_message_t *msg=NULL; +- eXosip_lock(); +- eXosip_insubscription_build_answer(op->tid,202,&msg); ++ eXosip_lock(eXo); ++ eXosip_insubscription_build_answer(eXo,op->tid,202,&msg); + if (msg==NULL){ + ms_error("Fail to build answer to subscribe."); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return -1; + } + if (op->base.contact){ + _osip_list_set_empty(&msg->contacts,(void (*)(void*))osip_contact_free); + osip_message_set_contact(msg,op->base.contact); + } +- eXosip_insubscription_send_answer(op->tid,202,msg); +- eXosip_unlock(); ++ eXosip_insubscription_send_answer(eXo,op->tid,202,msg); ++ eXosip_unlock(eXo); + return 0; + } + + int sal_subscribe_decline(SalOp *op){ +- eXosip_lock(); +- eXosip_insubscription_send_answer(op->tid,401,NULL); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_insubscription_send_answer(eXo,op->tid,401,NULL); ++ eXosip_unlock(eXo); + return 0; + } + +@@ -597,39 +599,39 @@ + + int sal_notify_presence(SalOp *op, SalPresenceStatus status, const char *status_message){ + osip_message_t *msg=NULL; +- eXosip_ss_t ss=EXOSIP_SUBCRSTATE_ACTIVE; ++ int ss=EXOSIP_SUBCRSTATE_ACTIVE; + if (op->nid==-1){ + ms_warning("Cannot notify, subscription was closed."); + return -1; + } + +- eXosip_lock(); +- eXosip_insubscription_build_notify(op->did,ss,DEACTIVATED,&msg); ++ eXosip_lock(eXo); ++ eXosip_insubscription_build_notify(eXo,op->did,ss,DEACTIVATED,&msg); + if (msg!=NULL){ + const char *identity=sal_op_get_contact(op); + if (identity==NULL) identity=sal_op_get_to(op); + _osip_list_set_empty(&msg->contacts,(void (*)(void*))osip_contact_free); + osip_message_set_contact(msg,identity); + add_presence_body(msg,status); +- eXosip_insubscription_send_request(op->did,msg); ++ eXosip_insubscription_send_request(eXo,op->did,msg); + }else ms_error("could not create notify for incoming subscription."); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return 0; + } + + int sal_notify_close(SalOp *op){ + osip_message_t *msg=NULL; +- eXosip_lock(); +- eXosip_insubscription_build_notify(op->did,EXOSIP_SUBCRSTATE_TERMINATED,DEACTIVATED,&msg); ++ eXosip_lock(eXo); ++ eXosip_insubscription_build_notify(eXo,op->did,EXOSIP_SUBCRSTATE_TERMINATED,DEACTIVATED,&msg); + if (msg!=NULL){ + const char *identity=sal_op_get_contact(op); + if (identity==NULL) identity=sal_op_get_to(op); + osip_message_set_contact(msg,identity); + add_presence_body(msg,SalPresenceOffline); +- eXosip_insubscription_send_request(op->did,msg); ++ eXosip_insubscription_send_request(eXo,op->did,msg); + }else ms_error("sal_notify_close(): could not create notify for incoming subscription" + " did=%i, nid=%i",op->did,op->nid); +- eXosip_unlock(); ++ eXosip_unlock(eXo); + return 0; + } + +@@ -641,7 +643,7 @@ + + mk_presence_body (presence_mode, from, buf, sizeof (buf), presence_style); + +- i = eXosip_build_publish(&pub,to, from, NULL, "presence", "600", ++ i = eXosip_build_publish(eXo,&pub,to, from, NULL, "presence", "600", + presence_style ? "application/xpidf+xml" : "application/pidf+xml", buf); + if (i<0){ + ms_warning("Failed to build publish request."); +@@ -650,10 +652,10 @@ + if (route) + sal_message_add_route(pub,route); + +- eXosip_lock(); +- i = eXosip_publish(pub, to); /* should update the sip-if-match parameter ++ eXosip_lock(eXo); ++ i = eXosip_publish(eXo, pub, to); /* should update the sip-if-match parameter + from sip-etag from last 200ok of PUBLISH */ +- eXosip_unlock(); ++ eXosip_unlock(eXo); + if (i<0){ + ms_message("Failed to send publish request."); + return -1; +@@ -693,10 +695,10 @@ + }else { + osip_message_t *msg=NULL; + ms_warning("Probably a refresh subscribe"); +- eXosip_lock(); +- eXosip_insubscription_build_answer(ev->tid,202,&msg); +- eXosip_insubscription_send_answer(ev->tid,202,msg); +- eXosip_unlock(); ++ eXosip_lock(eXo); ++ eXosip_insubscription_build_answer(eXo,ev->tid,202,&msg); ++ eXosip_insubscription_send_answer(eXo,ev->tid,202,msg); ++ eXosip_unlock(eXo); + } + }else _sal_exosip_subscription_recv(sal,ev); + } diff --git a/linphone.spec b/linphone.spec index af7cfd4..27471ca 100644 --- a/linphone.spec +++ b/linphone.spec @@ -12,13 +12,14 @@ Summary: Linphone Internet Phone Summary(pl.UTF-8): Linphone - telefon internetowy Name: linphone -Version: 3.5.2 +Version: 3.6.0 Release: 1 License: LGPL/GPL Group: Applications/Communications Source0: http://download.savannah.gnu.org/releases/linphone/stable/sources/%{name}-%{version}.tar.gz -# Source0-md5: 4be6e940372dba1f6793aef849c1ff0d +# Source0-md5: 9a101854bb16034b39096e18c80ceb78 Patch0: %{name}-imgdir.patch +Patch1: %{name}-exosip-4.0.0.patch URL: http://www.linphone.org/ BuildRequires: alsa-lib-devel >= 0.9.0 BuildRequires: autoconf @@ -29,14 +30,14 @@ BuildRequires: gnome-common >= 2.8.0 BuildRequires: gtk+2-devel BuildRequires: intltool BuildRequires: jack-audio-connection-kit-devel >= 0.15.0 -BuildRequires: libeXosip2-devel +BuildRequires: libeXosip2-devel >= 4.0.0 BuildRequires: libgsm-devel >= 1.0.10 BuildRequires: libosip2-devel >= 2.2.0 BuildRequires: libsamplerate-devel >= 0.0.13 BuildRequires: libtool >= 1:1.4.2-9 BuildRequires: libv4l-devel %{?with_system_ortp:BuildRequires: ortp-devel} -%{?with_system_mediastreamer:BuildRequires: mediastreamer-devel} +%{?with_system_mediastreamer:BuildRequires: mediastreamer-devel >= 2.9.0} BuildRequires: ncurses-devel BuildRequires: pkgconfig BuildRequires: pulseaudio-devel @@ -147,7 +148,11 @@ Statyczne wersje bibliotek Linphone. %prep %setup -q + +find '(' -name '*.c' -o -name '*.h' ')' -print0 | xargs -0 %{__sed} -i -e 's,\r$,,' + %patch0 -p1 +%patch1 -p1 %build %{__libtoolize} @@ -217,7 +222,7 @@ install pixmaps/%{name}.png $RPM_BUILD_ROOT%{_pixmapsdir} # kill .desktop in GNOME1-specific location #rm -rf $RPM_BUILD_ROOT%{_datadir}/gnome/apps -rm -r $RPM_BUILD_ROOT/usr/share/doc/linphone +rm -r $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} %{!?with_system_mediastreamer:rm -r $RPM_BUILD_ROOT/usr/share/doc/mediastreamer} %{!?with_system_ortp:rm -r $RPM_BUILD_ROOT/usr/share/doc/ortp} @@ -227,6 +232,9 @@ mv $RPM_BUILD_ROOT%{_localedir}/{nb_NO,nb} rm $RPM_BUILD_ROOT%{_mandir}/man1/sipomatic.1* rm $RPM_BUILD_ROOT%{_mandir}/cs/man1/sipomatic.1* +# some tests +rm $RPM_BUILD_ROOT%{_bindir}/*_test + %find_lang %{name} --with-gnome --all-name %clean @@ -271,6 +279,10 @@ rm -rf $RPM_BUILD_ROOT %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/liblinphone.so.*.*.* %attr(755,root,root) %ghost %{_libdir}/liblinphone.so.? +%attr(755,root,root) %{_libdir}/liblpc2xml.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/liblpc2xml.so.? +%attr(755,root,root) %{_libdir}/libxml2lpc.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/libxml2lpc.so.? %if %{without system_mediastreamer} || %{without system_ortp} %dir %{_libdir}/%{name} %endif @@ -287,10 +299,15 @@ rm -rf $RPM_BUILD_ROOT %files devel %defattr(644,root,root,755) +%doc coreapi/help/doc/html %attr(755,root,root) %{_libdir}/liblinphone.so +%attr(755,root,root) %{_libdir}/liblpc2xml.so +%attr(755,root,root) %{_libdir}/libxml2lpc.so %{_includedir}/linphone %{_pkgconfigdir}/linphone.pc %{_libdir}/liblinphone.la +%{_libdir}/liblpc2xml.la +%{_libdir}/libxml2lpc.la %if %{without system_mediastreamer} || %{without system_ortp} %dir %{_libdir}/%{name}/include %dir %{_libdir}/%{name}/pkgconfig @@ -311,6 +328,8 @@ rm -rf $RPM_BUILD_ROOT %files static %defattr(644,root,root,755) %{_libdir}/liblinphone.a +%{_libdir}/liblpc2xml.a +%{_libdir}/libxml2lpc.a %if %{without system_mediastreamer} %{_libdir}/%{name}/libmediastreamer.a %endif -- 2.44.0