Commit 0492c91b authored by Ghislain MARY's avatar Ghislain MARY

No longer rely on the uri field of LinphoneFriend being set (use...

No longer rely on the uri field of LinphoneFriend being set (use linphone_friend_get_address() instead).
parent 8be730ac
......@@ -1829,7 +1829,7 @@ linphonec_proxy_use(LinphoneCore *lc, int index)
static void
linphonec_friend_display(LinphoneFriend *fr)
{
LinphoneAddress *uri=linphone_address_clone(linphone_friend_get_address(fr));
LinphoneAddress *uri=linphone_friend_get_address(fr);
char *str;
linphonec_out("name: %s\n", linphone_address_get_display_name(uri));
......@@ -1853,9 +1853,15 @@ linphonec_friend_list(LinphoneCore *lc, char *pat)
for(n=0; friend!=NULL; friend=bctbx_list_next(friend), ++n )
{
if ( pat ) {
const char *name = linphone_address_get_display_name(
linphone_friend_get_address((LinphoneFriend*)friend->data));
if (name && ! strstr(name, pat) ) continue;
LinphoneAddress *addr = linphone_friend_get_address((LinphoneFriend*)friend->data);
if (addr) {
const char *name = linphone_address_get_display_name(addr);
if (name && ! strstr(name, pat) ) {
linphone_address_unref(addr);
continue;
}
linphone_address_unref(addr);
}
}
linphonec_out("****** Friend %i *******\n",n);
linphonec_friend_display((LinphoneFriend*)friend->data);
......@@ -1869,16 +1875,18 @@ linphonec_friend_call(LinphoneCore *lc, unsigned int num)
{
const bctbx_list_t *friend = linphone_core_get_friend_list(lc);
unsigned int n;
char *addr;
char *addr_str;
for(n=0; friend!=NULL; friend=bctbx_list_next(friend), ++n )
{
if ( n == num )
{
int ret;
addr = linphone_address_as_string(linphone_friend_get_address((LinphoneFriend*)friend->data));
ret=lpc_cmd_call(lc, addr);
ms_free(addr);
LinphoneAddress *addr = linphone_friend_get_address((LinphoneFriend*)friend->data);
addr_str = linphone_address_as_string(addr);
ret=lpc_cmd_call(lc, addr_str);
ms_free(addr_str);
linphone_address_unref(addr);
return ret;
}
}
......
......@@ -291,9 +291,13 @@ linphonec_transfer_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneC
static void
linphonec_notify_presence_received(LinphoneCore *lc,LinphoneFriend *fid)
{
char *tmp=linphone_address_as_string(linphone_friend_get_address(fid));
printf("Friend %s is %s\n", tmp, linphone_online_status_to_string(linphone_friend_get_status(fid)));
ms_free(tmp);
LinphoneAddress *addr = linphone_friend_get_address(fid);
if (addr) {
char *tmp=linphone_address_as_string(addr);
printf("Friend %s is %s\n", tmp, linphone_online_status_to_string(linphone_friend_get_status(fid)));
ms_free(tmp);
linphone_address_unref(addr);
}
// todo: update Friend list state (unimplemented)
}
......
......@@ -22,17 +22,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
LinphoneCardDavContext* linphone_carddav_context_new(LinphoneFriendList *lfl) {
LinphoneCardDavContext *carddav_context = NULL;
if (!linphone_core_vcard_supported()) {
ms_error("[carddav] vCard isn't available (maybe it wasn't compiled), can't do CardDAV sync");
return NULL;
}
if (!lfl || !lfl->uri) {
return NULL;
}
#ifdef VCARD_ENABLED
carddav_context = (LinphoneCardDavContext *)ms_new0(LinphoneCardDavContext, 1);
carddav_context->friend_list = linphone_friend_list_ref(lfl);
#else
ms_error("[carddav] vCard isn't available (maybe it wasn't compiled), can't do CardDAV sync");
#endif
return carddav_context;
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -381,7 +381,7 @@ void linphone_friend_list_update_dirty_friends(LinphoneFriendList *list);
* @param[in] list LinphoneFriendList object.
* @return a LinphoneCore object
*/
LINPHONE_PUBLIC LinphoneCore* linphone_friend_list_get_core(LinphoneFriendList *list);
LINPHONE_PUBLIC LinphoneCore* linphone_friend_list_get_core(const LinphoneFriendList *list);
/**
* Creates and adds LinphoneFriend objects to LinphoneFriendList from a file that contains the vCard(s) to parse
......
......@@ -52,17 +52,19 @@ static void stop(int signum){
*/
static void notify_presence_recv_updated (LinphoneCore *lc, LinphoneFriend *friend) {
const LinphonePresenceModel* model = linphone_friend_get_presence_model(friend);
const LinphoneAddress* friend_address = linphone_friend_get_address(friend);
LinphoneAddress* friend_address = linphone_friend_get_address(friend);
LinphonePresenceActivity *activity = linphone_presence_model_get_activity(model);
char *activity_str = linphone_presence_activity_to_string(activity);
printf("New state state [%s] for user id [%s] \n"
,activity_str
,linphone_address_as_string (friend_address));
linphone_address_unref(friend_address);
}
static void new_subscription_requested (LinphoneCore *lc, LinphoneFriend *friend, const char* url) {
const LinphoneAddress* friend_address = linphone_friend_get_address(friend);
LinphoneAddress* friend_address = linphone_friend_get_address(friend);
printf(" [%s] wants to see your status, accepting\n"
,linphone_address_as_string (friend_address));
linphone_address_unref(friend_address);
linphone_friend_edit(friend); /* start editing friend */
linphone_friend_set_inc_subscribe_policy(friend,LinphoneSPAccept); /* Accept incoming subscription request for this friend*/
linphone_friend_done(friend); /*commit change*/
......
......@@ -162,7 +162,7 @@ LINPHONE_PUBLIC int linphone_friend_set_address(LinphoneFriend *fr, const Linpho
* @param lf #LinphoneFriend object
* @return #LinphoneAddress
*/
LINPHONE_PUBLIC const LinphoneAddress *linphone_friend_get_address(const LinphoneFriend *lf);
LINPHONE_PUBLIC LinphoneAddress * linphone_friend_get_address(const LinphoneFriend *lf);
/**
* Adds an address in this friend
......
......@@ -1471,6 +1471,7 @@ static LinphonePresenceModel * process_pidf_xml_presence_notification(xmlparsing
void linphone_core_add_subscriber(LinphoneCore *lc, const char *subscriber, SalOp *op){
LinphoneFriend *fl=linphone_core_create_friend_with_address(lc,subscriber);
LinphoneAddress *addr;
char *tmp;
if (fl==NULL) return ;
......@@ -1481,10 +1482,11 @@ void linphone_core_add_subscriber(LinphoneCore *lc, const char *subscriber, SalO
/* the newly created "not yet" friend ownership is transfered to the lc->subscribers list*/
lc->subscribers=bctbx_list_append(lc->subscribers,fl);
tmp = linphone_address_as_string(fl->uri);
addr = linphone_friend_get_address(fl);
tmp = linphone_address_as_string(addr);
linphone_core_notify_new_subscription_requested(lc,fl,tmp);
ms_free(tmp);
linphone_address_unref(addr);
}
void linphone_core_reject_subscriber(LinphoneCore *lc, LinphoneFriend *lf){
......@@ -1905,7 +1907,7 @@ void linphone_notify_recv(LinphoneCore *lc, SalOp *op, SalSubscribeStatus ss, Sa
if (lf!=NULL){
LinphonePresenceActivity *activity = NULL;
char *activity_str;
friend=lf->uri;
friend=linphone_friend_get_address(lf);
tmp=linphone_address_as_string(friend);
activity = linphone_presence_model_get_activity(presence);
activity_str = linphone_presence_activity_to_string(activity);
......@@ -1916,6 +1918,7 @@ void linphone_notify_recv(LinphoneCore *lc, SalOp *op, SalSubscribeStatus ss, Sa
lf->presence_received = TRUE;
lf->out_sub_state = linphone_subscription_state_from_sal(ss);
linphone_core_notify_notify_presence_received(lc,(LinphoneFriend*)lf);
linphone_address_unref(friend);
ms_free(tmp);
if (op != lf->outsub){
/*case of a NOTIFY received out of any dialog*/
......
......@@ -54,11 +54,11 @@ LinphoneVcard* linphone_vcard_new(void) {
void linphone_vcard_free(LinphoneVcard *vCard) {
}
MSList* linphone_vcard_context_get_vcard_list_from_file(LinphoneVcardContext *context, const char *filename) {
bctbx_list_t* linphone_vcard_context_get_vcard_list_from_file(LinphoneVcardContext *context, const char *filename) {
return NULL;
}
MSList* linphone_vcard_context_get_vcard_list_from_buffer(LinphoneVcardContext *context, const char *buffer) {
bctbx_list_t* linphone_vcard_context_get_vcard_list_from_buffer(LinphoneVcardContext *context, const char *buffer) {
return NULL;
}
......@@ -100,7 +100,7 @@ void linphone_vcard_remove_sip_address(LinphoneVcard *vCard, const char *sip_add
void linphone_vcard_edit_main_sip_address(LinphoneVcard *vCard, const char *sip_address) {
}
MSList* linphone_vcard_get_sip_addresses(const LinphoneVcard *vCard) {
bctbx_list_t* linphone_vcard_get_sip_addresses(const LinphoneVcard *vCard) {
return NULL;
}
......@@ -110,7 +110,7 @@ void linphone_vcard_add_phone_number(LinphoneVcard *vCard, const char *phone) {
void linphone_vcard_remove_phone_number(LinphoneVcard *vCard, const char *phone) {
}
MSList* linphone_vcard_get_phone_numbers(const LinphoneVcard *vCard) {
bctbx_list_t* linphone_vcard_get_phone_numbers(const LinphoneVcard *vCard) {
return NULL;
}
......
......@@ -316,10 +316,12 @@ void linphone_gtk_call_log_update(GtkWidget *w){
#endif
lf=linphone_core_get_friend_by_address(linphone_gtk_get_core(),addr);
if(lf != NULL){
if ((display=linphone_address_get_display_name(linphone_friend_get_address(lf)))) {
LinphoneAddress *address = linphone_friend_get_address(lf);
if ((display=linphone_address_get_display_name(address))) {
/*update display name from friend*/
linphone_address_set_display_name(la,display);
}
linphone_address_unref(address);
} else {
display=linphone_address_get_display_name(la);
}
......
......@@ -89,11 +89,13 @@ static void linphone_gtk_set_selection_to_uri_bar(GtkTreeView *treeview){
LinphoneFriend *lf=NULL;
gchar* friend;
select = gtk_tree_view_get_selection (treeview);
if (gtk_tree_selection_get_selected (select, &model, &iter))
{
if (gtk_tree_selection_get_selected (select, &model, &iter)) {
LinphoneAddress *addr;
gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
friend=linphone_address_as_string(linphone_friend_get_address(lf));
addr = linphone_friend_get_address(lf);
friend=linphone_address_as_string(addr);
gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(linphone_gtk_get_main_window(),"uribar")),friend);
linphone_address_unref(addr);
ms_free(friend);
}
}
......@@ -175,11 +177,12 @@ gboolean linphone_gtk_on_key_press(GtkWidget *widget, GdkEvent *event, gpointer
LinphoneChatRoom *cr;
do{
if (index == key) {
const LinphoneAddress *uri;
LinphoneAddress *addr;
gtk_tree_model_get (model, &iter,FRIEND_CHATROOM , &cr, -1);
gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
uri = linphone_friend_get_address(lf);
if (lf != NULL) linphone_gtk_friend_list_set_chat_conversation(uri);
addr = linphone_friend_get_address(lf);
if (lf != NULL) linphone_gtk_friend_list_set_chat_conversation(addr);
linphone_address_unref(addr);
if (cr != NULL){
linphone_gtk_mark_chat_read(cr);
linphone_gtk_friend_list_update_button_display(GTK_TREE_VIEW(friendlist));
......@@ -214,7 +217,7 @@ void linphone_gtk_delete_history(GtkWidget *button){
linphone_chat_room_delete_history(cr);
if(chat_view!=NULL){
const LinphoneAddress *from=linphone_gtk_friend_list_get_active_address();
const LinphoneAddress *addr=linphone_friend_get_address(lf);
LinphoneAddress *addr=linphone_friend_get_address(lf);
if(linphone_address_weak_equal(from,addr)){
GtkTextView *text_view=GTK_TEXT_VIEW(linphone_gtk_get_widget(chat_view,"textview"));
GtkTextIter start;
......@@ -226,6 +229,7 @@ void linphone_gtk_delete_history(GtkWidget *button){
gtk_text_buffer_delete (text_buffer, &start, &end);
g_object_set_data(G_OBJECT(chat_view),"from_message",NULL);
}
linphone_address_unref(addr);
}
linphone_gtk_show_friends();
}
......@@ -327,19 +331,20 @@ void linphone_gtk_friend_list_set_chat_conversation(const LinphoneAddress *la){
store=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(friendlist)));
if (gtk_tree_model_get_iter_first(model,&iter)) {
do{
const LinphoneAddress *uri;
LinphoneAddress *addr;
gtk_tree_model_get(model, &iter,FRIEND_ID , &lf, -1);
uri=linphone_friend_get_address(lf);
if (linphone_address_weak_equal(uri,la)){
addr=linphone_friend_get_address(lf);
if (linphone_address_weak_equal(addr,la)){
gtk_tree_model_get (model, &iter,FRIEND_CHATROOM , &cr, -1);
if(cr==NULL){
cr=linphone_gtk_create_chatroom(uri);
cr=linphone_gtk_create_chatroom(addr);
gtk_list_store_set(store,&iter,FRIEND_CHATROOM,cr,-1);
}
linphone_gtk_friend_list_set_active_address(uri);
linphone_gtk_friend_list_set_active_address(addr);
gtk_tree_selection_select_iter(selection, &iter);
break;
}
linphone_address_unref(addr);
}while(gtk_tree_model_iter_next(model,&iter));
}
}
......@@ -388,22 +393,23 @@ void linphone_gtk_chat_selected(GtkWidget *item){
store=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(item)));
if (gtk_tree_selection_get_selected (select, &model, &iter)){
GtkNotebook *notebook=(GtkNotebook *)linphone_gtk_get_widget(w,"viewswitch");
const LinphoneAddress *uri;
LinphoneAddress *addr;
gtk_tree_model_get (model, &iter,FRIEND_ID , &lf, -1);
gtk_tree_model_get (model, &iter,FRIEND_CHATROOM , &cr, -1);
uri=linphone_friend_get_address(lf);
addr=linphone_friend_get_address(lf);
if(cr==NULL){
cr=linphone_gtk_create_chatroom(uri);
cr=linphone_gtk_create_chatroom(addr);
gtk_list_store_set(store,&iter,FRIEND_CHATROOM,cr,-1);
}
page=GTK_WIDGET(g_object_get_data(G_OBJECT(friendlist),"chatview"));
linphone_gtk_friend_list_set_active_address(uri);
linphone_gtk_friend_list_set_active_address(addr);
if(page==NULL){
page=linphone_gtk_init_chatroom(cr,uri);
page=linphone_gtk_init_chatroom(cr,addr);
g_object_set_data(G_OBJECT(friendlist),"chatview",(gpointer)page);
} else {
linphone_gtk_load_chatroom(cr,uri,page);
linphone_gtk_load_chatroom(cr,addr,page);
}
linphone_address_unref(addr);
linphone_gtk_mark_chat_read(cr);
gtk_notebook_set_current_page(notebook,gtk_notebook_page_num(notebook,page));
g_idle_add((GSourceFunc)grab_focus,linphone_gtk_get_widget(page,"text_entry"));
......@@ -589,8 +595,10 @@ void linphone_gtk_friend_list_on_name_column_clicked(GtkTreeModel *model){
static int get_friend_weight(const LinphoneFriend *lf){
int w=0;
LinphoneCore *lc=linphone_gtk_get_core();
LinphoneChatRoom *cr=linphone_core_get_chat_room(lc,linphone_friend_get_address(lf));
LinphoneAddress *addr = linphone_friend_get_address(lf);
LinphoneChatRoom *cr=linphone_core_get_chat_room(lc, addr);
linphone_address_unref(addr);
if (cr && linphone_chat_room_get_unread_messages_count(cr)>0){
w+=2000;
}
......@@ -616,7 +624,7 @@ static int friend_compare_func(const LinphoneFriend *lf1, const LinphoneFriend *
w2=get_friend_weight(lf2);
if (w1==w2){
const char *u1,*u2;
const LinphoneAddress *addr1,*addr2;
LinphoneAddress *addr1,*addr2;
addr1=linphone_friend_get_address(lf1);
addr2=linphone_friend_get_address(lf2);
u1=linphone_address_get_display_name(addr1) ? linphone_address_get_display_name(addr1) : linphone_address_get_username(addr1);
......@@ -628,6 +636,8 @@ static int friend_compare_func(const LinphoneFriend *lf1, const LinphoneFriend *
} else {
ret = -1;
}
linphone_address_unref(addr1);
linphone_address_unref(addr2);
} else {
ret = w2-w1;
}
......@@ -749,8 +759,8 @@ void linphone_gtk_show_friends(void){
for(itf=sorted;itf!=NULL;itf=bctbx_list_next(itf)){
LinphoneFriend *lf=(LinphoneFriend*)itf->data;
const LinphoneAddress *f_uri=linphone_friend_get_address(lf);
char *uri=linphone_address_as_string(f_uri);
LinphoneAddress *f_addr=linphone_friend_get_address(lf);
char *uri=linphone_address_as_string(f_addr);
const char *name=linphone_friend_get_name(lf);
const char *display=name;
char *escaped=NULL;
......@@ -759,14 +769,14 @@ void linphone_gtk_show_friends(void){
//BuddyInfo *bi;
gboolean send_subscribe=linphone_friend_get_send_subscribe(lf);
if (display==NULL || display[0]=='\0') {
display=linphone_address_get_username(f_uri);
display=linphone_address_get_username(f_addr);
}
gtk_list_store_append(store,&iter);
gtk_list_store_set(store,&iter,FRIEND_NAME, display,FRIEND_ID,lf,
FRIEND_PRESENCE_IMG, send_subscribe ? status_to_icon_name(linphone_friend_get_status(lf)) : NULL,
FRIEND_CHAT,"linphone-chat-nothing", -1);
cr=linphone_gtk_create_chatroom(f_uri);
cr=linphone_gtk_create_chatroom(f_addr);
gtk_list_store_set(store,&iter,FRIEND_CHATROOM,cr,-1);
nbmsg=linphone_chat_room_get_unread_messages_count(cr);
if(nbmsg != 0){
......@@ -776,6 +786,7 @@ void linphone_gtk_show_friends(void){
escaped=g_markup_escape_text(uri,-1);
gtk_list_store_set(store,&iter,FRIEND_SIP_ADDRESS,escaped,-1);
g_free(escaped);
linphone_address_unref(f_addr);
ms_free(uri);
}
bctbx_list_free(sorted);
......@@ -785,13 +796,14 @@ void linphone_gtk_show_contact(LinphoneFriend *lf, GtkWidget *parent){
GtkWidget *w = linphone_gtk_create_window("contact", parent);
char *uri;
const char *name = linphone_friend_get_name(lf);
const LinphoneAddress *f_uri = linphone_friend_get_address(lf);
LinphoneAddress *f_addr = linphone_friend_get_address(lf);
uri=linphone_address_as_string_uri_only(f_uri);
uri=linphone_address_as_string_uri_only(f_addr);
if (uri) {
gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(w,"sip_address")),uri);
ms_free(uri);
}
linphone_address_unref(f_addr);
if (name){
gtk_entry_set_text(GTK_ENTRY(linphone_gtk_get_widget(w,"name")),name);
......
......@@ -677,7 +677,7 @@ void on_contact_provider_search_results( LinphoneContactSearch* req, bctbx_list_
while( friends ){
LinphoneFriend* lf = friends->data;
if( lf ) {
const LinphoneAddress* la = linphone_friend_get_address(lf);
LinphoneAddress* la = linphone_friend_get_address(lf);
if( la ){
char *addr = linphone_address_as_string(la);
......@@ -688,6 +688,7 @@ void on_contact_provider_search_results( LinphoneContactSearch* req, bctbx_list_
1, COMPLETION_LDAP, -1);
ms_free(addr);
}
linphone_address_unref(la);
}
}
friends = friends->next;
......
......@@ -37,9 +37,11 @@ static LinphoneCoreManager* presence_linphone_core_manager_new(char* username) {
void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char *url){
char* from=linphone_address_as_string(linphone_friend_get_address(lf));
LinphoneAddress *addr = linphone_friend_get_address(lf);
char* from=linphone_address_as_string(addr);
stats* counters;
ms_message("New subscription request from [%s] url [%s]",from,url);
linphone_address_unref(addr);
ms_free(from);
counters = get_stats(lc);
counters->number_of_NewSubscriptionRequest++;
......@@ -48,10 +50,11 @@ void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char
void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf) {
stats* counters;
unsigned int i;
char* from=linphone_address_as_string(linphone_friend_get_address(lf));
LinphoneAddress *addr = linphone_friend_get_address(lf);
char* from=linphone_address_as_string(addr);
ms_message("New Notify request from [%s] ",from);
linphone_address_unref(addr);
ms_free(from);
counters = get_stats(lc);
counters->number_of_NotifyPresenceReceived++;
......
......@@ -276,6 +276,7 @@ static void friends_sqlite_storage(void) {
bctbx_list_t *friends_lists_from_db = NULL;
char *friends_db = bc_tester_file("friends.db");
LinphoneFriendListStats *stats = (LinphoneFriendListStats *)ms_new0(LinphoneFriendListStats, 1);
LinphoneAddress *laddress = NULL, *laddress2 = NULL;
char *address = NULL, *address2 = NULL;
v_table->friend_list_created = friend_list_created_cb;
......@@ -329,9 +330,13 @@ static void friends_sqlite_storage(void) {
BC_ASSERT_EQUAL(lf2->storage_id, lf->storage_id, unsigned int, "%u");
BC_ASSERT_STRING_EQUAL(linphone_vcard_get_etag(linphone_friend_get_vcard(lf2)), linphone_vcard_get_etag(linphone_friend_get_vcard(lf)));
BC_ASSERT_STRING_EQUAL(linphone_vcard_get_url(linphone_friend_get_vcard(lf2)), linphone_vcard_get_url(linphone_friend_get_vcard(lf)));
address = linphone_address_as_string(linphone_friend_get_address(lf));
address2 = linphone_address_as_string(linphone_friend_get_address(lf2));
laddress = linphone_friend_get_address(lf);
address = linphone_address_as_string(laddress);
laddress2 = linphone_friend_get_address(lf2);
address2 = linphone_address_as_string(laddress2);
BC_ASSERT_STRING_EQUAL(address2, address);
linphone_address_unref(laddress);
linphone_address_unref(laddress2);
ms_free(address);
ms_free(address2);
......@@ -583,6 +588,7 @@ static void carddav_integration(void) {
LinphoneCardDAVStats *stats = (LinphoneCardDAVStats *)ms_new0(LinphoneCardDAVStats, 1);
const char *refkey = "toto";
char *address = NULL;
LinphoneAddress *addr;
linphone_friend_list_set_uri(lfl, CARDDAV_SERVER);
cbs = linphone_friend_list_get_callbacks(lfl);
......@@ -636,9 +642,11 @@ static void carddav_integration(void) {
BC_ASSERT_STRING_EQUAL(lf->refkey, refkey);
BC_ASSERT_EQUAL(lf->storage_id, lf2->storage_id, unsigned int, "%u");
linphone_friend_unref(lf2);
address = linphone_address_as_string_uri_only(lf->uri);
addr = linphone_friend_get_address(lf);
address = linphone_address_as_string_uri_only(addr);
BC_ASSERT_STRING_EQUAL(address, "sip:sylvain@sip.linphone.org");
ms_free(address);
linphone_address_unref(addr);
linphone_friend_edit(lf);
linphone_friend_done(lf);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment