Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
liblinphone
Commits
03130daa
Commit
03130daa
authored
Aug 03, 2017
by
Ghislain MARY
Browse files
Prevent crash in message tests.
parent
db52ddaa
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
17 additions
and
12 deletions
+17
-12
coreapi/chat.c
coreapi/chat.c
+9
-8
coreapi/chat_file_transfer.c
coreapi/chat_file_transfer.c
+6
-2
coreapi/private.h
coreapi/private.h
+1
-0
tester/message_tester.c
tester/message_tester.c
+1
-2
No files found.
coreapi/chat.c
View file @
03130daa
...
...
@@ -117,13 +117,14 @@ void linphone_chat_message_cbs_set_file_transfer_progress_indication(
BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES
(
LinphoneChatMessage
);
static
void
_linphone_chat_room_destroy
(
LinphoneChatRoom
*
cr
)
{
bctbx_list_free_with_data
(
cr
->
transient_messages
,
(
void
(
*
)(
void
*
))
linphone_chat_message_release
);
if
(
cr
->
received_rtt_characters
)
{
cr
->
received_rtt_characters
=
bctbx_list_free_with_data
(
cr
->
received_rtt_characters
,
(
void
(
*
)(
void
*
))
ms_free
);
}
linphone_chat_room_delete_composing_idle_timer
(
cr
);
linphone_chat_room_delete_composing_refresh_timer
(
cr
);
linphone_chat_room_delete_remote_composing_refresh_timer
(
cr
);
bctbx_list_free_with_data
(
cr
->
transient_messages
,
(
bctbx_list_free_func
)
linphone_chat_message_release
);
if
(
cr
->
weak_messages
!=
NULL
)
bctbx_list_free
(
cr
->
weak_messages
);
if
(
cr
->
received_rtt_characters
)
{
cr
->
received_rtt_characters
=
bctbx_list_free_with_data
(
cr
->
received_rtt_characters
,
(
bctbx_list_free_func
)
ms_free
);
}
if
(
cr
->
lc
!=
NULL
)
{
if
(
bctbx_list_find
(
cr
->
lc
->
chatrooms
,
cr
))
{
ms_error
(
"LinphoneChatRoom[%p] is destroyed while still being used by the LinphoneCore. This is abnormal."
...
...
@@ -138,7 +139,6 @@ static void _linphone_chat_room_destroy(LinphoneChatRoom *cr) {
if
(
cr
->
pending_message
)
linphone_chat_message_destroy
(
cr
->
pending_message
);
ms_free
(
cr
->
peer
);
if
(
cr
->
weak_messages
!=
NULL
)
bctbx_list_free
(
cr
->
weak_messages
);
}
void
linphone_chat_message_set_state
(
LinphoneChatMessage
*
msg
,
LinphoneChatMessageState
state
)
{
...
...
@@ -313,6 +313,7 @@ void linphone_chat_room_release(LinphoneChatRoom *cr) {
linphone_chat_room_delete_composing_refresh_timer
(
cr
);
linphone_chat_room_delete_remote_composing_refresh_timer
(
cr
);
bctbx_list_for_each
(
cr
->
weak_messages
,
(
bctbx_list_iterate_func
)
linphone_chat_message_deactivate
);
bctbx_list_for_each
(
cr
->
transient_messages
,
(
bctbx_list_iterate_func
)
linphone_chat_message_deactivate
);
cr
->
lc
=
NULL
;
linphone_chat_room_unref
(
cr
);
}
...
...
@@ -1717,11 +1718,11 @@ void linphone_chat_message_unref(LinphoneChatMessage *msg) {
}
static
void
linphone_chat_message_deactivate
(
LinphoneChatMessage
*
msg
){
/*mark the chat msg as orphan (it has no chat room anymore)*/
msg
->
chat_room
=
NULL
;
if
(
msg
->
file_transfer_information
!=
NULL
)
{
linphone_chat_message_cancel_file_transfer
(
msg
);
_
linphone_chat_message_cancel_file_transfer
(
msg
,
FALSE
);
}
/*mark the chat msg as orphan (it has no chat room anymore)*/
msg
->
chat_room
=
NULL
;
}
static
void
linphone_chat_message_release
(
LinphoneChatMessage
*
msg
)
{
...
...
coreapi/chat_file_transfer.c
View file @
03130daa
...
...
@@ -613,7 +613,7 @@ void linphone_chat_message_start_file_download(LinphoneChatMessage *msg,
linphone_chat_message_download_file
(
msg
);
}
void
linphone_chat_message_cancel_file_transfer
(
LinphoneChatMessage
*
msg
)
{
void
_
linphone_chat_message_cancel_file_transfer
(
LinphoneChatMessage
*
msg
,
bool_t
unref
)
{
if
(
msg
->
http_request
)
{
if
(
msg
->
state
==
LinphoneChatMessageStateInProgress
)
{
linphone_chat_message_set_state
(
msg
,
LinphoneChatMessageStateNotDelivered
);
...
...
@@ -625,7 +625,7 @@ void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage *msg) {
,
msg
,
msg
->
chat_room
);
belle_http_provider_cancel_request
(
msg
->
chat_room
->
lc
->
http_provider
,
msg
->
http_request
);
if
(
msg
->
dir
==
LinphoneChatMessageOutgoing
)
{
if
(
(
msg
->
dir
==
LinphoneChatMessageOutgoing
)
&&
unref
)
{
// must release it
linphone_chat_message_unref
(
msg
);
}
...
...
@@ -639,6 +639,10 @@ void linphone_chat_message_cancel_file_transfer(LinphoneChatMessage *msg) {
}
}
void
linphone_chat_message_cancel_file_transfer
(
LinphoneChatMessage
*
msg
)
{
_linphone_chat_message_cancel_file_transfer
(
msg
,
TRUE
);
}
void
linphone_chat_message_set_file_transfer_filepath
(
LinphoneChatMessage
*
msg
,
const
char
*
filepath
)
{
if
(
msg
->
file_transfer_filepath
!=
NULL
)
{
ms_free
(
msg
->
file_transfer_filepath
);
...
...
coreapi/private.h
View file @
03130daa
...
...
@@ -657,6 +657,7 @@ void linphone_chat_message_set_state(LinphoneChatMessage *msg, LinphoneChatMessa
void
linphone_chat_message_set_is_secured
(
LinphoneChatMessage
*
msg
,
bool_t
secured
);
void
linphone_chat_message_send_delivery_notification
(
LinphoneChatMessage
*
cm
,
LinphoneReason
reason
);
void
linphone_chat_message_send_display_notification
(
LinphoneChatMessage
*
cm
);
void
_linphone_chat_message_cancel_file_transfer
(
LinphoneChatMessage
*
msg
,
bool_t
unref
);
int
linphone_chat_room_upload_file
(
LinphoneChatMessage
*
msg
);
void
_linphone_chat_room_send_message
(
LinphoneChatRoom
*
cr
,
LinphoneChatMessage
*
msg
);
LinphoneChatMessageCbs
*
linphone_chat_message_cbs_new
(
void
);
...
...
tester/message_tester.c
View file @
03130daa
...
...
@@ -1793,9 +1793,8 @@ void file_transfer_io_error_base(char *server_url, bool_t destroy_room) {
linphone_chat_room_send_chat_message
(
chatroom
,
msg
);
BC_ASSERT_TRUE
(
wait_for_until
(
marie
->
lc
,
NULL
,
&
marie
->
stat
.
number_of_LinphoneMessageInProgress
,
1
,
1000
));
if
(
destroy_room
)
{
//since message is orphan, we do not expect to be notified of state change
linphone_core_delete_chat_room
(
marie
->
lc
,
chatroom
);
BC_ASSERT_
FALS
E
(
wait_for_until
(
marie
->
lc
,
NULL
,
&
marie
->
stat
.
number_of_LinphoneMessageNotDelivered
,
1
,
1000
));
BC_ASSERT_
TRU
E
(
wait_for_until
(
marie
->
lc
,
NULL
,
&
marie
->
stat
.
number_of_LinphoneMessageNotDelivered
,
1
,
1000
));
}
else
{
BC_ASSERT_TRUE
(
wait_for_until
(
marie
->
lc
,
NULL
,
&
marie
->
stat
.
number_of_LinphoneMessageNotDelivered
,
1
,
3000
));
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment