mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-02-07 14:18:25 +00:00
Merge branch 'master' of git.linphone.org:linphone into bc_vfs
This commit is contained in:
commit
c52e4a8c80
10 changed files with 98 additions and 87 deletions
|
|
@ -332,7 +332,17 @@ const char* linphone_event_get_custom_header(LinphoneEvent* ev, const char* name
|
|||
|
||||
|
||||
void linphone_event_terminate(LinphoneEvent *lev){
|
||||
// if event was already terminated (including on error), we should not terminate it again
|
||||
// otherwise it will be unreffed twice.
|
||||
if (lev->publish_state == LinphonePublishError || lev->publish_state == LinphonePublishCleared) {
|
||||
return;
|
||||
}
|
||||
if (lev->subscription_state == LinphoneSubscriptionError || lev->subscription_state == LinphoneSubscriptionTerminated) {
|
||||
return;
|
||||
}
|
||||
|
||||
lev->terminating=TRUE;
|
||||
|
||||
if (lev->dir==LinphoneSubscriptionIncoming){
|
||||
sal_notify_close(lev->op);
|
||||
}else if (lev->dir==LinphoneSubscriptionOutgoing){
|
||||
|
|
@ -404,10 +414,10 @@ LinphoneCore *linphone_event_get_core(const LinphoneEvent *lev){
|
|||
static belle_sip_error_code _linphone_event_marshall(belle_sip_object_t *obj, char* buff, size_t buff_size, size_t *offset) {
|
||||
LinphoneEvent *ev = (LinphoneEvent*)obj;
|
||||
belle_sip_error_code err = BELLE_SIP_OK;
|
||||
|
||||
err = belle_sip_snprintf(buff, buff_size, offset, "%s of %s", ev->dir == LinphoneSubscriptionIncoming ?
|
||||
|
||||
err = belle_sip_snprintf(buff, buff_size, offset, "%s of %s", ev->dir == LinphoneSubscriptionIncoming ?
|
||||
"Incoming Subscribe" : (ev->dir == LinphoneSubscriptionOutgoing ? "Outgoing subscribe" : "Publish"), ev->name);
|
||||
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6513,7 +6513,7 @@ static void codecs_config_uninit(LinphoneCore *lc)
|
|||
ms_list_free_with_data(lc->codecs_conf.text_codecs, (void (*)(void*))payload_type_destroy);
|
||||
}
|
||||
|
||||
void ui_config_uninit(LinphoneCore* lc)
|
||||
void friends_config_uninit(LinphoneCore* lc)
|
||||
{
|
||||
ms_message("Destroying friends.");
|
||||
lc->friends_lists = ms_list_free_with_data(lc->friends_lists, (void (*)(void*))_linphone_friend_list_release);
|
||||
|
|
@ -6555,19 +6555,19 @@ static void linphone_core_uninit(LinphoneCore *lc)
|
|||
LinphoneCall *the_call = lc->calls->data;
|
||||
linphone_core_terminate_call(lc,the_call);
|
||||
linphone_core_iterate(lc);
|
||||
ms_usleep(50000);
|
||||
ms_usleep(10000);
|
||||
}
|
||||
|
||||
for (elem = lc->friends_lists; elem != NULL; elem = ms_list_next(elem)) {
|
||||
LinphoneFriendList *list = (LinphoneFriendList *)elem->data;
|
||||
linphone_friend_list_enable_subscriptions(list, FALSE);
|
||||
linphone_friend_list_enable_subscriptions(list,FALSE);
|
||||
if (list->event)
|
||||
wait_until_unsubscribe = TRUE;
|
||||
}
|
||||
/*give a chance to unsubscribe, might be optimized*/
|
||||
for (i=0; wait_until_unsubscribe && i<20; i++) {
|
||||
for (i=0; wait_until_unsubscribe && i<50; i++) {
|
||||
linphone_core_iterate(lc);
|
||||
ms_usleep(50000);
|
||||
ms_usleep(10000);
|
||||
}
|
||||
|
||||
lc->chatrooms = ms_list_free_with_data(lc->chatrooms, (MSIterateFunc)linphone_chat_room_release);
|
||||
|
|
@ -6582,7 +6582,7 @@ static void linphone_core_uninit(LinphoneCore *lc)
|
|||
|
||||
lc->msevq=NULL;
|
||||
/* save all config */
|
||||
ui_config_uninit(lc);
|
||||
friends_config_uninit(lc);
|
||||
sip_config_uninit(lc);
|
||||
net_config_uninit(lc);
|
||||
rtp_config_uninit(lc);
|
||||
|
|
|
|||
|
|
@ -3458,10 +3458,6 @@ extern "C" jobjectArray Java_org_linphone_core_LinphoneFriendListImpl_getFriendL
|
|||
return jFriends;
|
||||
}
|
||||
|
||||
extern "C" void Java_org_linphone_core_LinphoneFriendListImpl_closeSubscriptions(JNIEnv* env, jobject thiz, jlong friendListptr) {
|
||||
linphone_friend_list_close_subscriptions((LinphoneFriendList*)friendListptr);
|
||||
}
|
||||
|
||||
extern "C" void Java_org_linphone_core_LinphoneFriendListImpl_updateSubscriptions(JNIEnv* env
|
||||
,jobject thiz
|
||||
,jlong friendListptr
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ static void processSection_cb(const char *entry, struct __processSectionCtx *ctx
|
|||
|
||||
if (lp_config_get_skip_flag_for_entry(ctx->ctx->lpc, ctx->section, entry)) {
|
||||
lpc2xml_log(ctx->ctx, LPC2XML_WARNING, "Skipped entry %s", entry);
|
||||
ctx->ret = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -210,6 +211,7 @@ static void processConfig_cb(const char *section, struct __processConfigCtx *ctx
|
|||
|
||||
if (lp_config_get_skip_flag_for_section(ctx->ctx->lpc, section)) {
|
||||
lpc2xml_log(ctx->ctx, LPC2XML_WARNING, "Skipped section %s", section);
|
||||
ctx->ret = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ public interface LinphoneFriendList {
|
|||
public void addLocalFriend(LinphoneFriend friend);
|
||||
public LinphoneFriend[] getFriendList();
|
||||
public void updateSubscriptions(LinphoneProxyConfig proxyConfig,boolean onlyWhenRegistered);
|
||||
public void closeSubscriptions();
|
||||
public void enableSubscriptions(boolean enable);
|
||||
public LinphoneFriend findFriendByUri(String uri);
|
||||
public void setUri(String uri);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ class LinphoneFriendListImpl implements LinphoneFriendList, Serializable {
|
|||
private native void addLocalFriend(long nativePtr, long friendPtr);
|
||||
private native LinphoneFriend[] getFriendList(long nativePtr);
|
||||
private native void updateSubscriptions(long nativePtr, long proxyConfigPtr, boolean onlyWhenRegistered);
|
||||
private native void closeSubscriptions(long nativePtr);
|
||||
private native void enableSubscriptions(long nativePtr, boolean enable);
|
||||
private native Object getCore(long ptr);
|
||||
private native LinphoneFriend findFriendByUri(long nativePtr, String uri);
|
||||
|
|
@ -75,13 +74,6 @@ class LinphoneFriendListImpl implements LinphoneFriendList, Serializable {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeSubscriptions() {
|
||||
synchronized(getSyncObject()) {
|
||||
closeSubscriptions(nativePtr);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableSubscriptions(boolean enable) {
|
||||
synchronized(getSyncObject()) {
|
||||
|
|
|
|||
|
|
@ -192,6 +192,9 @@ typedef struct _stats {
|
|||
int number_of_LinphonePresenceActivityWorking;
|
||||
int number_of_LinphonePresenceActivityWorship;
|
||||
const LinphonePresenceModel *last_received_presence;
|
||||
|
||||
int number_of_LinphonePresenceBasicStatusOpen;
|
||||
int number_of_LinphonePresenceBasicStatusClosed;
|
||||
|
||||
int number_of_inforeceived;
|
||||
LinphoneInfoMessage* last_received_info_message;
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ static void subscriber_no_longer_reachable(void){
|
|||
|
||||
linphone_core_add_friend(marie->lc, lf);
|
||||
linphone_friend_unref(lf);
|
||||
BC_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePresenceActivityOnline,1, 2000));
|
||||
BC_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePresenceBasicStatusOpen,1, 2000));
|
||||
|
||||
/*make sure marie subscribe is not reset by accident because of code below located in linphone_core_iterate
|
||||
|
||||
|
|
@ -162,7 +162,7 @@ static void subscriber_no_longer_reachable(void){
|
|||
//sal_set_send_error(marie->lc->sal,0);
|
||||
|
||||
/*because of notify timeout detected by server, so subscription is reset*/
|
||||
previous_number_of_LinphonePresenceActivityOffline = marie->stat.number_of_LinphonePresenceActivityOffline;
|
||||
previous_number_of_LinphonePresenceActivityOffline = marie->stat.number_of_LinphonePresenceBasicStatusClosed;
|
||||
BC_ASSERT_TRUE(wait_for_list(lcs,&marie->stat.number_of_LinphonePresenceActivityOffline,previous_number_of_LinphonePresenceActivityOffline+1, 4000));
|
||||
|
||||
// now subscription is supposed to be dead because notify was not answered in time.
|
||||
|
|
|
|||
|
|
@ -48,74 +48,83 @@ void new_subscription_requested(LinphoneCore *lc, LinphoneFriend *lf, const char
|
|||
|
||||
void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf) {
|
||||
stats* counters;
|
||||
LinphonePresenceActivity *activity = NULL;
|
||||
|
||||
int i;
|
||||
char* from=linphone_address_as_string(linphone_friend_get_address(lf));
|
||||
ms_message("New Notify request from [%s] ",from);
|
||||
ms_free(from);
|
||||
counters = get_stats(lc);
|
||||
counters->number_of_NotifyPresenceReceived++;
|
||||
|
||||
counters->last_received_presence = linphone_friend_get_presence_model(lf);
|
||||
activity = linphone_presence_model_get_activity(counters->last_received_presence);
|
||||
switch (linphone_presence_activity_get_type(activity)) {
|
||||
case LinphonePresenceActivityOffline:
|
||||
counters->number_of_LinphonePresenceActivityOffline++; break;
|
||||
case LinphonePresenceActivityOnline:
|
||||
counters->number_of_LinphonePresenceActivityOnline++; break;
|
||||
case LinphonePresenceActivityAppointment:
|
||||
counters->number_of_LinphonePresenceActivityAppointment++; break;
|
||||
case LinphonePresenceActivityAway:
|
||||
counters->number_of_LinphonePresenceActivityAway++; break;
|
||||
case LinphonePresenceActivityBreakfast:
|
||||
counters->number_of_LinphonePresenceActivityBreakfast++; break;
|
||||
case LinphonePresenceActivityBusy:
|
||||
counters->number_of_LinphonePresenceActivityBusy++; break;
|
||||
case LinphonePresenceActivityDinner:
|
||||
counters->number_of_LinphonePresenceActivityDinner++; break;
|
||||
case LinphonePresenceActivityHoliday:
|
||||
counters->number_of_LinphonePresenceActivityHoliday++; break;
|
||||
case LinphonePresenceActivityInTransit:
|
||||
counters->number_of_LinphonePresenceActivityInTransit++; break;
|
||||
case LinphonePresenceActivityLookingForWork:
|
||||
counters->number_of_LinphonePresenceActivityLookingForWork++; break;
|
||||
case LinphonePresenceActivityLunch:
|
||||
counters->number_of_LinphonePresenceActivityLunch++; break;
|
||||
case LinphonePresenceActivityMeal:
|
||||
counters->number_of_LinphonePresenceActivityMeal++; break;
|
||||
case LinphonePresenceActivityMeeting:
|
||||
counters->number_of_LinphonePresenceActivityMeeting++; break;
|
||||
case LinphonePresenceActivityOnThePhone:
|
||||
counters->number_of_LinphonePresenceActivityOnThePhone++; break;
|
||||
case LinphonePresenceActivityOther:
|
||||
counters->number_of_LinphonePresenceActivityOther++; break;
|
||||
case LinphonePresenceActivityPerformance:
|
||||
counters->number_of_LinphonePresenceActivityPerformance++; break;
|
||||
case LinphonePresenceActivityPermanentAbsence:
|
||||
counters->number_of_LinphonePresenceActivityPermanentAbsence++; break;
|
||||
case LinphonePresenceActivityPlaying:
|
||||
counters->number_of_LinphonePresenceActivityPlaying++; break;
|
||||
case LinphonePresenceActivityPresentation:
|
||||
counters->number_of_LinphonePresenceActivityPresentation++; break;
|
||||
case LinphonePresenceActivityShopping:
|
||||
counters->number_of_LinphonePresenceActivityShopping++; break;
|
||||
case LinphonePresenceActivitySleeping:
|
||||
counters->number_of_LinphonePresenceActivitySleeping++; break;
|
||||
case LinphonePresenceActivitySpectator:
|
||||
counters->number_of_LinphonePresenceActivitySpectator++; break;
|
||||
case LinphonePresenceActivitySteering:
|
||||
counters->number_of_LinphonePresenceActivitySteering++; break;
|
||||
case LinphonePresenceActivityTravel:
|
||||
counters->number_of_LinphonePresenceActivityTravel++; break;
|
||||
case LinphonePresenceActivityTV:
|
||||
counters->number_of_LinphonePresenceActivityTV++; break;
|
||||
case LinphonePresenceActivityUnknown:
|
||||
counters->number_of_LinphonePresenceActivityUnknown++; break;
|
||||
case LinphonePresenceActivityVacation:
|
||||
counters->number_of_LinphonePresenceActivityVacation++; break;
|
||||
case LinphonePresenceActivityWorking:
|
||||
counters->number_of_LinphonePresenceActivityWorking++; break;
|
||||
case LinphonePresenceActivityWorship:
|
||||
counters->number_of_LinphonePresenceActivityWorship++; break;
|
||||
if (linphone_presence_model_get_basic_status(counters->last_received_presence) == LinphonePresenceBasicStatusOpen) {
|
||||
counters->number_of_LinphonePresenceBasicStatusOpen++;
|
||||
} else if (linphone_presence_model_get_basic_status(counters->last_received_presence) == LinphonePresenceBasicStatusClosed) {
|
||||
counters->number_of_LinphonePresenceBasicStatusClosed++;
|
||||
} else {
|
||||
ms_error("unexpeted basioc status [%i]",linphone_presence_model_get_basic_status(counters->last_received_presence));
|
||||
}
|
||||
for (i=0;i<linphone_presence_model_get_nb_activities(counters->last_received_presence); i++) {
|
||||
LinphonePresenceActivity *activity = linphone_presence_model_get_nth_activity(counters->last_received_presence, i);
|
||||
switch (linphone_presence_activity_get_type(activity)) {
|
||||
case LinphonePresenceActivityOffline:
|
||||
counters->number_of_LinphonePresenceActivityOffline++; break;
|
||||
case LinphonePresenceActivityOnline:
|
||||
counters->number_of_LinphonePresenceActivityOnline++; break;
|
||||
case LinphonePresenceActivityAppointment:
|
||||
counters->number_of_LinphonePresenceActivityAppointment++; break;
|
||||
case LinphonePresenceActivityAway:
|
||||
counters->number_of_LinphonePresenceActivityAway++; break;
|
||||
case LinphonePresenceActivityBreakfast:
|
||||
counters->number_of_LinphonePresenceActivityBreakfast++; break;
|
||||
case LinphonePresenceActivityBusy:
|
||||
counters->number_of_LinphonePresenceActivityBusy++; break;
|
||||
case LinphonePresenceActivityDinner:
|
||||
counters->number_of_LinphonePresenceActivityDinner++; break;
|
||||
case LinphonePresenceActivityHoliday:
|
||||
counters->number_of_LinphonePresenceActivityHoliday++; break;
|
||||
case LinphonePresenceActivityInTransit:
|
||||
counters->number_of_LinphonePresenceActivityInTransit++; break;
|
||||
case LinphonePresenceActivityLookingForWork:
|
||||
counters->number_of_LinphonePresenceActivityLookingForWork++; break;
|
||||
case LinphonePresenceActivityLunch:
|
||||
counters->number_of_LinphonePresenceActivityLunch++; break;
|
||||
case LinphonePresenceActivityMeal:
|
||||
counters->number_of_LinphonePresenceActivityMeal++; break;
|
||||
case LinphonePresenceActivityMeeting:
|
||||
counters->number_of_LinphonePresenceActivityMeeting++; break;
|
||||
case LinphonePresenceActivityOnThePhone:
|
||||
counters->number_of_LinphonePresenceActivityOnThePhone++; break;
|
||||
case LinphonePresenceActivityOther:
|
||||
counters->number_of_LinphonePresenceActivityOther++; break;
|
||||
case LinphonePresenceActivityPerformance:
|
||||
counters->number_of_LinphonePresenceActivityPerformance++; break;
|
||||
case LinphonePresenceActivityPermanentAbsence:
|
||||
counters->number_of_LinphonePresenceActivityPermanentAbsence++; break;
|
||||
case LinphonePresenceActivityPlaying:
|
||||
counters->number_of_LinphonePresenceActivityPlaying++; break;
|
||||
case LinphonePresenceActivityPresentation:
|
||||
counters->number_of_LinphonePresenceActivityPresentation++; break;
|
||||
case LinphonePresenceActivityShopping:
|
||||
counters->number_of_LinphonePresenceActivityShopping++; break;
|
||||
case LinphonePresenceActivitySleeping:
|
||||
counters->number_of_LinphonePresenceActivitySleeping++; break;
|
||||
case LinphonePresenceActivitySpectator:
|
||||
counters->number_of_LinphonePresenceActivitySpectator++; break;
|
||||
case LinphonePresenceActivitySteering:
|
||||
counters->number_of_LinphonePresenceActivitySteering++; break;
|
||||
case LinphonePresenceActivityTravel:
|
||||
counters->number_of_LinphonePresenceActivityTravel++; break;
|
||||
case LinphonePresenceActivityTV:
|
||||
counters->number_of_LinphonePresenceActivityTV++; break;
|
||||
case LinphonePresenceActivityUnknown:
|
||||
counters->number_of_LinphonePresenceActivityUnknown++; break;
|
||||
case LinphonePresenceActivityVacation:
|
||||
counters->number_of_LinphonePresenceActivityVacation++; break;
|
||||
case LinphonePresenceActivityWorking:
|
||||
counters->number_of_LinphonePresenceActivityWorking++; break;
|
||||
case LinphonePresenceActivityWorship:
|
||||
counters->number_of_LinphonePresenceActivityWorship++; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ int main(int argc, char *argv[]) {
|
|||
lpc = lp_config_new(argv[2]);
|
||||
if(strcmp("convert", argv[1]) == 0 && argc == 4) {
|
||||
ctx = lpc2xml_context_new(cb_function, NULL);
|
||||
lpc2xml_convert_file(ctx, argv[3]);
|
||||
lpc2xml_set_lpc(ctx, lpc);
|
||||
lpc2xml_convert_file(ctx, argv[3]);
|
||||
lpc2xml_context_destroy(ctx);
|
||||
} else if (strcmp("dump", argv[1]) == 0 && argc == 3) {
|
||||
char *dump = lp_config_dump_as_xml(lpc);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue