mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-02-07 14:18:25 +00:00
Merge remote-tracking branch 'origin/3.10.x'
This commit is contained in:
commit
144743535d
15 changed files with 262 additions and 42 deletions
|
|
@ -389,7 +389,7 @@ void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatMessage
|
|||
}
|
||||
} else {
|
||||
SalOp *op = NULL;
|
||||
LinphoneCall *call;
|
||||
LinphoneCall *call=NULL;
|
||||
char *content_type;
|
||||
const char *identity = NULL;
|
||||
// add to transient list
|
||||
|
|
@ -466,6 +466,16 @@ void _linphone_chat_room_send_message(LinphoneChatRoom *cr, LinphoneChatMessage
|
|||
}
|
||||
linphone_chat_room_delete_composing_idle_timer(cr);
|
||||
linphone_chat_room_delete_composing_refresh_timer(cr);
|
||||
|
||||
if (call && call->op == op) {
|
||||
/*In this case, chat delivery status is not notified, so unrefing chat message right now*/
|
||||
/*Might be better fixed by delivering status, but too costly for now*/
|
||||
msg->chat_room->transient_messages = ms_list_remove(msg->chat_room->transient_messages, msg);
|
||||
linphone_chat_message_unref(msg);
|
||||
linphone_chat_message_unref(msg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// if operation failed, we should not change message state
|
||||
|
|
|
|||
|
|
@ -626,7 +626,7 @@ static void transfer_already_assigned_payload_types(SalMediaDescription *old, Sa
|
|||
|
||||
static const char *linphone_call_get_bind_ip_for_stream(LinphoneCall *call, int stream_index){
|
||||
const char *bind_ip = lp_config_get_string(call->core->config,"rtp","bind_address",
|
||||
linphone_core_ipv6_enabled(call->core) ? "::0" : "0.0.0.0");
|
||||
call->af == AF_INET6 ? "::0" : "0.0.0.0");
|
||||
|
||||
if (stream_index<2 && call->media_ports[stream_index].multicast_ip[0]!='\0'){
|
||||
if (call->dir==LinphoneCallOutgoing){
|
||||
|
|
|
|||
|
|
@ -7505,6 +7505,9 @@ void linphone_core_set_chat_database_path(LinphoneCore *lc, const char *path){
|
|||
linphone_core_message_storage_init(lc);
|
||||
}
|
||||
}
|
||||
const char* linphone_core_get_chat_database_path(const LinphoneCore *lc) {
|
||||
return lc->chat_db_file;
|
||||
}
|
||||
void linphone_core_enable_sdp_200_ack(LinphoneCore *lc, bool_t enable) {
|
||||
lp_config_set_int(lc->config,"sip","sdp_200_ack",lc->sip_conf.sdp_200_ack=enable);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1301,7 +1301,13 @@ typedef void (*LinphoneChatMessageCbsFileTransferProgressIndicationCb)(LinphoneC
|
|||
|
||||
LINPHONE_PUBLIC void linphone_core_set_chat_database_path(LinphoneCore *lc, const char *path);
|
||||
|
||||
|
||||
/**
|
||||
* Get path to the database file used for storing chat messages.
|
||||
* @param lc the linphone core
|
||||
* @return file path or NULL if not exist
|
||||
**/
|
||||
|
||||
LINPHONE_PUBLIC const char *linphone_core_get_chat_database_path(const LinphoneCore *lc);
|
||||
/**
|
||||
* Get a chat room whose peer is the supplied address. If it does not exist yet, it will be created.
|
||||
* No reference is transfered to the application. The LinphoneCore keeps a reference on the chat room.
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@ int _linphone_sqlite3_open(const char *db_file, sqlite3 **db) {
|
|||
/*since we plug our vfs into sqlite, we convert to UTF-8.
|
||||
* On Windows, the filename has to be converted back to windows native charset.*/
|
||||
char *utf8_filename = utf8_convert(db_file);
|
||||
ret = sqlite3_open_v2(utf8_filename, db, flags, LINPHONE_SQLITE3_VFS);
|
||||
//ret = sqlite3_open_v2(utf8_filename, db, flags, LINPHONE_SQLITE3_VFS);
|
||||
ret = sqlite3_open_v2(utf8_filename, db, flags, NULL); // Do not use VFS until all issues are resolved
|
||||
ms_free(utf8_filename);
|
||||
|
||||
if (ret != SQLITE_OK) return ret;
|
||||
|
|
|
|||
|
|
@ -61,17 +61,17 @@ static int sqlite3bctbx_Close(sqlite3_file *p){
|
|||
|
||||
|
||||
/**
|
||||
* Read count bytes from the open file given by p, starting at offset and puts them in
|
||||
* Read count bytes from the open file given by p, starting at offset and puts them in
|
||||
* the buffer pointed by buf.
|
||||
* Calls bctbx_file_read.
|
||||
*
|
||||
*
|
||||
* @param p sqlite3_file file handle pointer.
|
||||
* @param buf buffer to write the read bytes to.
|
||||
* @param count number of bytes to read
|
||||
* @param offset file offset where to start reading
|
||||
* @return SQLITE_OK if read bytes equals count,
|
||||
* @return SQLITE_OK if read bytes equals count,
|
||||
* SQLITE_IOERR_SHORT_READ if the number of bytes read is inferior to count
|
||||
* SQLITE_IOERR_READ if an error occurred.
|
||||
* SQLITE_IOERR_READ if an error occurred.
|
||||
*/
|
||||
static int sqlite3bctbx_Read(sqlite3_file *p, void *buf, int count, sqlite_int64 offset){
|
||||
int ret;
|
||||
|
|
@ -83,10 +83,10 @@ static int sqlite3bctbx_Read(sqlite3_file *p, void *buf, int count, sqlite_int64
|
|||
}
|
||||
else if( ret >= 0 ){
|
||||
/*fill in unread portion of buffer, as requested by sqlite3 documentation*/
|
||||
memset(((uint8_t*)buf) + ret, 0, count-ret);
|
||||
memset(((uint8_t*)buf) + ret, 0, count-ret);
|
||||
return SQLITE_IOERR_SHORT_READ;
|
||||
}else {
|
||||
|
||||
|
||||
return SQLITE_IOERR_READ;
|
||||
}
|
||||
}
|
||||
|
|
@ -114,14 +114,14 @@ static int sqlite3bctbx_Write(sqlite3_file *p, const void *buf, int count, sqlit
|
|||
}
|
||||
return SQLITE_IOERR_WRITE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Saves the file size associated with the file handle p into the argument pSize.
|
||||
* @param p sqlite3_file file handle pointer.
|
||||
* @return SQLITE_OK if read bytes equals count,
|
||||
* SQLITE_IOERR_FSTAT if the file size returned is negative
|
||||
* SQLITE_ERROR if an error occurred.
|
||||
* @return SQLITE_OK if read bytes equals count,
|
||||
* SQLITE_IOERR_FSTAT if the file size returned is negative
|
||||
* SQLITE_ERROR if an error occurred.
|
||||
*/
|
||||
static int sqlite3bctbx_FileSize(sqlite3_file *p, sqlite_int64 *pSize){
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ static int sqlite3bctbx_FileSize(sqlite3_file *p, sqlite_int64 *pSize){
|
|||
if (pSize){
|
||||
*pSize = rc;
|
||||
return SQLITE_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
return SQLITE_ERROR;
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ static int sqlite3bctbx_FileSize(sqlite3_file *p, sqlite_int64 *pSize){
|
|||
|
||||
|
||||
/************************ PLACE HOLDER FUNCTIONS ***********************/
|
||||
/** These functions were implemented to please the SQLite VFS
|
||||
/** These functions were implemented to please the SQLite VFS
|
||||
implementation. Some of them are just stubs, some do a very limited job. */
|
||||
|
||||
|
||||
|
|
@ -187,7 +187,7 @@ static int sqlite3bctbx_nolockCheckReservedLock(sqlite3_file *pUnused, int *pRes
|
|||
}
|
||||
|
||||
/**
|
||||
* The lock file mechanism is not used with this VFS : locking the file
|
||||
* The lock file mechanism is not used with this VFS : locking the file
|
||||
* is always OK.
|
||||
* @param pUnused sqlite3_file file handle pointer.
|
||||
* @param unused unused
|
||||
|
|
@ -290,7 +290,7 @@ static char* ConvertFromUtf8Filename(const char* fName){
|
|||
* @param pVfs sqlite3_vfs VFS pointer.
|
||||
* @param fName filename
|
||||
* @param p file handle pointer
|
||||
* @param flags db file access flags
|
||||
* @param flags db file access flags
|
||||
* @param pOutFlags flags used by SQLite
|
||||
* @return SQLITE_CANTOPEN on error, SQLITE_OK on success.
|
||||
*/
|
||||
|
|
@ -302,7 +302,7 @@ static int sqlite3bctbx_Open(sqlite3_vfs *pVfs, const char *fName, sqlite3_file
|
|||
sqlite3bctbx_Write, /* xWrite */
|
||||
0, /*xTruncate*/
|
||||
sqlite3bctbx_Sync,
|
||||
sqlite3bctbx_FileSize,
|
||||
sqlite3bctbx_FileSize,
|
||||
sqlite3bctbx_nolockLock,
|
||||
sqlite3bctbx_nolockUnlock,
|
||||
sqlite3bctbx_nolockCheckReservedLock,
|
||||
|
|
@ -374,6 +374,46 @@ sqlite3_vfs *sqlite3_bctbx_vfs_create(void){
|
|||
return &bctbx_vfs;
|
||||
}
|
||||
|
||||
/*static int sqlite3bctbx_winFullPathname(
|
||||
sqlite3_vfs *pVfs, // Pointer to vfs object
|
||||
const char *zRelative, // Possibly relative input path
|
||||
int nFull, // Size of output buffer in bytes
|
||||
char *zFull){
|
||||
//LPWSTR zTemp;
|
||||
//DWORD nByte;
|
||||
// If this path name begins with "/X:", where "X" is any alphabetic
|
||||
// character, discard the initial "/" from the pathname.
|
||||
//
|
||||
//if (zRelative[0] == '/' && sqlite3Isalpha(zRelative[1]) && zRelative[2] == ':'){
|
||||
// zRelative++;
|
||||
//}
|
||||
|
||||
nByte = GetFullPathNameW((LPCWSTR)zRelative, 0, 0, 0);
|
||||
if (nByte == 0){
|
||||
return SQLITE_CANTOPEN_FULLPATH;
|
||||
}
|
||||
nByte += 3;
|
||||
zTemp = bctbx_malloc(nByte*sizeof(zTemp[0]));
|
||||
memset(zTemp, 0, nByte*sizeof(zTemp[0]));
|
||||
if (zTemp == 0){
|
||||
return SQLITE_IOERR_NOMEM;
|
||||
}
|
||||
nByte = GetFullPathNameW((LPCWSTR)zRelative, nByte, zTemp, 0);
|
||||
if (nByte == 0){
|
||||
bctbx_free(zTemp);
|
||||
return SQLITE_CANTOPEN_FULLPATH;
|
||||
}
|
||||
if (zTemp){
|
||||
sqlite3_snprintf(MIN(nFull, pVfs->mxPathname), zFull, "%s", zTemp);
|
||||
bctbx_free(zTemp);
|
||||
return SQLITE_OK;
|
||||
}
|
||||
else{
|
||||
return SQLITE_IOERR_NOMEM;
|
||||
}
|
||||
sqlite3_snprintf(MIN(nFull, pVfs->mxPathname), zFull, "%s", zRelative);
|
||||
return SQLITE_OK;
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
|
|
@ -395,10 +435,10 @@ void sqlite3_bctbx_vfs_register( int makeDefault){
|
|||
pVfsToUse->xGetLastError = pDefault->xGetLastError; /* Not implemented by sqlite3 :place holder */
|
||||
/*Functions below should not be a problem sincve we are declaring ourselves
|
||||
in version 1 */
|
||||
|
||||
/* used in version 2
|
||||
|
||||
/* used in version 2
|
||||
xCurrentTimeInt64;*/
|
||||
/* used in version 3
|
||||
/* used in version 3
|
||||
xGetSystemCall
|
||||
xSetSystemCall
|
||||
xNextSystemCall*/
|
||||
|
|
|
|||
|
|
@ -4794,6 +4794,20 @@ static void v6_call_over_nat_64(void){
|
|||
}else ms_warning("Test skipped, no ipv6 nat64 available");
|
||||
}
|
||||
|
||||
static void call_with_ice_in_ipv4_with_v6_enabled(void) {
|
||||
if (liblinphone_tester_ipv4_available() && liblinphone_tester_ipv6_available()){
|
||||
bool_t liblinphonetester_ipv6_save=liblinphonetester_ipv6; /*this test nee v6*/
|
||||
LinphoneCoreManager* marie = linphone_core_manager_new("marie_v4proxy_rc");
|
||||
LinphoneCoreManager* pauline = linphone_core_manager_new("pauline_v4proxy_rc");
|
||||
|
||||
liblinphonetester_ipv6=TRUE;
|
||||
_call_with_ice_base(pauline,marie,TRUE,TRUE,TRUE,FALSE);
|
||||
linphone_core_manager_destroy(marie);
|
||||
linphone_core_manager_destroy(pauline);
|
||||
liblinphonetester_ipv6=liblinphonetester_ipv6_save; /*this test nee v6*/
|
||||
|
||||
} else ms_warning("Test skipped, need both ipv6 and v4 available");
|
||||
}
|
||||
|
||||
test_t call_tests[] = {
|
||||
TEST_NO_TAG("Early declined call", early_declined_call),
|
||||
|
|
@ -4810,6 +4824,7 @@ test_t call_tests[] = {
|
|||
TEST_NO_TAG("Call with timeouted bye", call_with_timeouted_bye),
|
||||
TEST_NO_TAG("Direct call over IPv6", direct_call_over_ipv6),
|
||||
TEST_NO_TAG("IPv6 call over NAT64", v6_call_over_nat_64),
|
||||
TEST_NO_TAG("Call with ICE in IPv4 with IPv6 enabled", call_with_ice_in_ipv4_with_v6_enabled),
|
||||
TEST_NO_TAG("Outbound call with multiple proxy possible", call_outbound_with_multiple_proxy),
|
||||
TEST_NO_TAG("Audio call recording", audio_call_recording_test),
|
||||
#if 0 /* not yet activated because not implemented */
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ auto-respawn=true
|
|||
# List of white space separated host names pointing to this machine.
|
||||
# This is to prevent loops while routing SIP messages.
|
||||
# Default value: localhost
|
||||
aliases=localhost sip2.linphone.org sipopen.example.org sip.example.org auth.example.org auth1.example.org auth2.example.org client.example.org
|
||||
aliases=localhost sip2.linphone.org sipopen.example.org sip.example.org auth.example.org auth1.example.org auth2.example.org client.example.org sipv4.example.org sipv4-nat64.example.org
|
||||
|
||||
# List of white space separated SIP uris where the proxy must listen.Wildcard
|
||||
# (*) can be used to mean 'all local ip addresses'. If 'transport'
|
||||
|
|
|
|||
|
|
@ -781,6 +781,10 @@ static void lime_text_message(void) {
|
|||
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
|
||||
LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc");
|
||||
|
||||
if (!linphone_core_lime_available(marie->lc)) {
|
||||
ms_warning("Lime not available, skiping");
|
||||
goto end;
|
||||
}
|
||||
/* make sure lime is enabled */
|
||||
linphone_core_enable_lime(marie->lc, 1);
|
||||
linphone_core_enable_lime(pauline->lc, 1);
|
||||
|
|
@ -809,7 +813,7 @@ static void lime_text_message(void) {
|
|||
|
||||
BC_ASSERT_PTR_NOT_NULL(linphone_core_get_chat_room(marie->lc,pauline->identity));
|
||||
/* TODO : check the msg arrived correctly deciphered */
|
||||
|
||||
end:
|
||||
linphone_core_manager_destroy(marie);
|
||||
linphone_core_manager_destroy(pauline);
|
||||
}
|
||||
|
|
@ -821,6 +825,10 @@ static void lime_text_message_to_non_lime(void) {
|
|||
LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc");
|
||||
LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc");
|
||||
|
||||
if (!linphone_core_lime_available(marie->lc)) {
|
||||
ms_warning("Lime not available, skiping");
|
||||
goto end;
|
||||
}
|
||||
/* make sure lime is enabled */
|
||||
linphone_core_enable_lime(marie->lc, 0);
|
||||
linphone_core_enable_lime(pauline->lc, 1);
|
||||
|
|
@ -842,10 +850,11 @@ static void lime_text_message_to_non_lime(void) {
|
|||
BC_ASSERT_EQUAL(marie->stat.number_of_LinphoneMessageReceivedLegacy,0, int, "%d");
|
||||
|
||||
BC_ASSERT_PTR_NOT_NULL(linphone_core_get_chat_room(marie->lc,pauline->identity));
|
||||
end:
|
||||
linphone_core_manager_destroy(marie);
|
||||
linphone_core_manager_destroy(pauline);
|
||||
}
|
||||
void lime_transfer_message_base(bool_t encrypt_file) {
|
||||
void lime_transfer_message_base(bool_t encrypt_file,bool_t download_file_from_stored_msg) {
|
||||
FILE *ZIDCacheMarieFD, *ZIDCachePaulineFD;
|
||||
LinphoneCoreManager *marie, *pauline;
|
||||
LinphoneChatMessage *msg;
|
||||
|
|
@ -856,6 +865,10 @@ void lime_transfer_message_base(bool_t encrypt_file) {
|
|||
marie = linphone_core_manager_new( "marie_rc");
|
||||
pauline = linphone_core_manager_new( "pauline_tcp_rc");
|
||||
|
||||
if (!linphone_core_lime_available(marie->lc)) {
|
||||
ms_warning("Lime not available, skiping");
|
||||
goto end;
|
||||
}
|
||||
/* make sure lime is enabled */
|
||||
linphone_core_enable_lime(marie->lc, 1);
|
||||
linphone_core_enable_lime(pauline->lc, 1);
|
||||
|
|
@ -893,26 +906,49 @@ void lime_transfer_message_base(bool_t encrypt_file) {
|
|||
linphone_chat_room_send_chat_message(msg->chat_room, msg);
|
||||
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceivedWithFile,1));
|
||||
if (marie->stat.last_received_chat_message ) {
|
||||
cbs = linphone_chat_message_get_callbacks(marie->stat.last_received_chat_message);
|
||||
LinphoneChatMessage *recv_msg;
|
||||
const LinphoneContent* content;
|
||||
if (download_file_from_stored_msg) {
|
||||
LinphoneChatRoom *marie_room = linphone_core_get_chat_room(marie->lc, pauline->identity);
|
||||
MSList * msgs = linphone_chat_room_get_history(marie_room,1);
|
||||
BC_ASSERT_PTR_NOT_NULL(msgs);
|
||||
if (!msgs) goto end;
|
||||
recv_msg = (LinphoneChatMessage *)msgs->data;
|
||||
ms_list_free(msgs);
|
||||
} else {
|
||||
recv_msg = marie->stat.last_received_chat_message;
|
||||
}
|
||||
cbs = linphone_chat_message_get_callbacks(recv_msg);
|
||||
linphone_chat_message_cbs_set_msg_state_changed(cbs, liblinphone_tester_chat_message_msg_state_changed);
|
||||
linphone_chat_message_cbs_set_file_transfer_recv(cbs, file_transfer_received);
|
||||
linphone_chat_message_download_file(marie->stat.last_received_chat_message);
|
||||
content = linphone_chat_message_get_file_transfer_information(recv_msg);
|
||||
if (!content) goto end;
|
||||
if (encrypt_file)
|
||||
BC_ASSERT_PTR_NOT_NULL(linphone_content_get_key(content));
|
||||
else
|
||||
BC_ASSERT_PTR_NULL(linphone_content_get_key(content));
|
||||
linphone_chat_message_download_file(recv_msg);
|
||||
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneFileTransferDownloadSuccessful,1));
|
||||
}
|
||||
BC_ASSERT_TRUE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneFileTransferDownloadSuccessful,1));
|
||||
|
||||
BC_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageInProgress,2, int, "%d"); // file transfer
|
||||
BC_ASSERT_EQUAL(pauline->stat.number_of_LinphoneMessageDelivered,1, int, "%d");
|
||||
BC_ASSERT_EQUAL(marie->stat.number_of_LinphoneFileTransferDownloadSuccessful,1, int, "%d");
|
||||
end:
|
||||
linphone_core_manager_destroy(marie);
|
||||
linphone_core_manager_destroy(pauline);
|
||||
}
|
||||
|
||||
static void lime_transfer_message(void) {
|
||||
lime_transfer_message_base(TRUE);
|
||||
lime_transfer_message_base(TRUE,FALSE);
|
||||
}
|
||||
|
||||
static void lime_transfer_message_from_history(void) {
|
||||
lime_transfer_message_base(TRUE,TRUE);
|
||||
}
|
||||
|
||||
static void lime_transfer_message_without_encryption(void) {
|
||||
lime_transfer_message_base(FALSE);
|
||||
lime_transfer_message_base(FALSE,FALSE);
|
||||
}
|
||||
|
||||
static void printHex(char *title, uint8_t *data, size_t length) {
|
||||
|
|
@ -1303,7 +1339,6 @@ end:
|
|||
ms_free(src_db);
|
||||
bc_free(tmp_db);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void text_status_after_destroying_chat_room(void) {
|
||||
LinphoneCoreManager *marie = linphone_core_manager_new("marie_rc");
|
||||
|
|
@ -1788,7 +1823,7 @@ void file_transfer_with_http_proxy(void) {
|
|||
|
||||
test_t message_tests[] = {
|
||||
TEST_NO_TAG("Text message", text_message),
|
||||
TEST_ONE_TAG("Text message within call dialog", text_message_within_call_dialog, "LeaksMemory"),
|
||||
TEST_NO_TAG("Text message within call dialog", text_message_within_call_dialog),
|
||||
TEST_NO_TAG("Text message with credentials from auth callback", text_message_with_credential_from_auth_callback),
|
||||
TEST_NO_TAG("Text message with privacy", text_message_with_privacy),
|
||||
TEST_NO_TAG("Text message compatibility mode", text_message_compatibility_mode),
|
||||
|
|
@ -1807,18 +1842,16 @@ test_t message_tests[] = {
|
|||
TEST_NO_TAG("Info message", info_message),
|
||||
TEST_NO_TAG("Info message with body", info_message_with_body),
|
||||
TEST_NO_TAG("IsComposing notification", is_composing_notification),
|
||||
#ifdef HAVE_LIME
|
||||
TEST_NO_TAG("Lime text message", lime_text_message),
|
||||
TEST_NO_TAG("Lime text message to non lime", lime_text_message_to_non_lime),
|
||||
TEST_NO_TAG("Lime transfer message", lime_transfer_message),
|
||||
TEST_ONE_TAG("Lime transfer message from history", lime_transfer_message_from_history,"LeaksMemory"),
|
||||
TEST_NO_TAG("Lime transfer message without encryption", lime_transfer_message_without_encryption),
|
||||
TEST_NO_TAG("Lime unitary", lime_unit),
|
||||
#endif /* HAVE_LIME */
|
||||
#ifdef SQLITE_STORAGE_ENABLED
|
||||
TEST_NO_TAG("Database migration", database_migration),
|
||||
TEST_NO_TAG("History range", history_range),
|
||||
TEST_NO_TAG("History count", history_count),
|
||||
#endif
|
||||
TEST_NO_TAG("Text status after destroying chat room", text_status_after_destroying_chat_room),
|
||||
TEST_NO_TAG("Transfer not sent if invalid url", file_transfer_not_sent_if_invalid_url),
|
||||
TEST_NO_TAG("Transfer not sent if host not found", file_transfer_not_sent_if_host_not_found),
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ realm=sip.example.org
|
|||
|
||||
|
||||
[proxy_0]
|
||||
reg_proxy=sipv4.example.org;transport=tcp
|
||||
reg_route=sipv4.example.org;transport=tcp;lr
|
||||
reg_proxy=sipv4-nat64.example.org;transport=tcp
|
||||
reg_route=sipv4-nat64.example.org;transport=tcp;lr
|
||||
reg_identity="Super Marie" <sip:marie@sip.example.org>
|
||||
reg_expires=3600
|
||||
reg_sendregister=1
|
||||
|
|
|
|||
55
tester/rcfiles/marie_v4proxy_rc
Normal file
55
tester/rcfiles/marie_v4proxy_rc
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
[sip]
|
||||
sip_port=-1
|
||||
sip_tcp_port=-1
|
||||
sip_tls_port=-1
|
||||
default_proxy=0
|
||||
ping_with_options=0
|
||||
use_ipv6=1
|
||||
composing_idle_timeout=1
|
||||
store_ha1_passwd=0 #used for sipp
|
||||
|
||||
[auth_info_0]
|
||||
username=marie
|
||||
userid=marie
|
||||
passwd=secret
|
||||
realm=sip.example.org
|
||||
|
||||
|
||||
[proxy_0]
|
||||
reg_proxy=sipv4.example.org;transport=tcp
|
||||
reg_route=sipv4.example.org;transport=tcp;lr
|
||||
reg_identity="Super Marie" <sip:marie@sip.example.org>
|
||||
reg_expires=3600
|
||||
reg_sendregister=1
|
||||
publish=0
|
||||
dial_escape_plus=0
|
||||
|
||||
[friend_0]
|
||||
url="Paupoche" <sip:pauline@sip.example.org>
|
||||
pol=accept
|
||||
subscribe=0
|
||||
|
||||
|
||||
[rtp]
|
||||
audio_rtp_port=18070-28000
|
||||
video_rtp_port=28070-38000
|
||||
text_rtp_port=39000-49000
|
||||
|
||||
[video]
|
||||
display=0
|
||||
capture=0
|
||||
show_local=0
|
||||
size=qcif
|
||||
enabled=0
|
||||
self_view=0
|
||||
automatically_initiate=0
|
||||
automatically_accept=0
|
||||
device=StaticImage: Static picture
|
||||
|
||||
[sound]
|
||||
echocancellation=0 #to not overload cpu in case of VG
|
||||
|
||||
[net]
|
||||
dns_srv_enabled=0 #no srv needed in general
|
||||
stun_server=stun.linphone.org
|
||||
|
||||
|
|
@ -15,8 +15,8 @@ realm=sip.example.org
|
|||
|
||||
|
||||
[proxy_0]
|
||||
reg_proxy=sipv4.example.org;transport=tls
|
||||
reg_route=sipv4.example.org;transport=tls
|
||||
reg_proxy=sipv4-nat64.example.org;transport=tls
|
||||
reg_route=sipv4-nat64.example.org;transport=tls
|
||||
reg_identity=sip:pauline@sip.example.org
|
||||
reg_expires=3600
|
||||
reg_sendregister=1
|
||||
|
|
|
|||
51
tester/rcfiles/pauline_v4proxy_rc
Normal file
51
tester/rcfiles/pauline_v4proxy_rc
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
[sip]
|
||||
sip_port=-1
|
||||
sip_tcp_port=-1
|
||||
sip_tls_port=-1
|
||||
default_proxy=0
|
||||
ping_with_options=0
|
||||
use_ipv6=1
|
||||
composing_idle_timeout=1
|
||||
|
||||
[auth_info_0]
|
||||
username=pauline
|
||||
userid=pauline
|
||||
passwd=secret
|
||||
realm=sip.example.org
|
||||
|
||||
|
||||
[proxy_0]
|
||||
reg_proxy=sipv4.example.org;transport=tls
|
||||
reg_route=sipv4.example.org;transport=tls
|
||||
reg_identity=sip:pauline@sip.example.org
|
||||
reg_expires=3600
|
||||
reg_sendregister=1
|
||||
publish=0
|
||||
dial_escape_plus=0
|
||||
|
||||
#[friend_0]
|
||||
#url="Mariette" <sip:marie@sip.example.org>
|
||||
#pol=accept
|
||||
#subscribe=0
|
||||
|
||||
[rtp]
|
||||
audio_rtp_port=18070-28000
|
||||
video_rtp_port=39072-49000
|
||||
|
||||
[video]
|
||||
display=0
|
||||
capture=0
|
||||
show_local=0
|
||||
size=qcif
|
||||
enabled=0
|
||||
self_view=0
|
||||
automatically_initiate=0
|
||||
automatically_accept=0
|
||||
device=StaticImage: Static picture
|
||||
|
||||
[sound]
|
||||
echocancellation=0 #to not overload cpu in case of VG
|
||||
|
||||
[net]
|
||||
dns_srv_enabled=0 #no srv needed in general
|
||||
stun_server=stun.linphone.org
|
||||
|
|
@ -119,6 +119,7 @@ LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, c
|
|||
char *rootcapath = NULL;
|
||||
char *dnsuserhostspath = NULL;
|
||||
char *nowebcampath = NULL;
|
||||
char *chatdb = NULL;
|
||||
|
||||
if (path==NULL) path=".";
|
||||
|
||||
|
|
@ -151,6 +152,7 @@ LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, c
|
|||
linphone_core_set_ringback(lc, ringbackpath);
|
||||
linphone_core_set_root_ca(lc,rootcapath);
|
||||
}
|
||||
chatdb = ms_strdup_printf("%s/messages-%p.db",bc_tester_get_writable_dir_prefix(),lc);
|
||||
|
||||
linphone_core_enable_ipv6(lc, liblinphonetester_ipv6);
|
||||
|
||||
|
|
@ -160,11 +162,14 @@ LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, c
|
|||
linphone_core_set_static_picture(lc,nowebcampath);
|
||||
#endif
|
||||
|
||||
linphone_core_set_chat_database_path(lc, chatdb);
|
||||
|
||||
ms_free(ringpath);
|
||||
ms_free(ringbackpath);
|
||||
ms_free(nowebcampath);
|
||||
ms_free(rootcapath);
|
||||
ms_free(dnsuserhostspath);
|
||||
ms_free(chatdb);
|
||||
|
||||
if( filepath ) ms_free(filepath);
|
||||
|
||||
|
|
@ -425,7 +430,7 @@ void linphone_core_manager_uninit(LinphoneCoreManager *mgr) {
|
|||
if (mgr->stat.last_received_info_message) linphone_info_message_destroy(mgr->stat.last_received_info_message);
|
||||
if (mgr->lc){
|
||||
const char *record_file=linphone_core_get_record_file(mgr->lc);
|
||||
|
||||
const char *chatdb = linphone_core_get_chat_database_path(mgr->lc);
|
||||
if (!liblinphone_tester_keep_record_files && record_file){
|
||||
if ((bc_get_number_of_failures()-mgr->number_of_cunit_error_at_creation)>0) {
|
||||
ms_message ("Test has failed, keeping recorded file [%s]",record_file);
|
||||
|
|
@ -434,6 +439,7 @@ void linphone_core_manager_uninit(LinphoneCoreManager *mgr) {
|
|||
}
|
||||
}
|
||||
linphone_core_destroy(mgr->lc);
|
||||
if (chatdb) unlink(chatdb);
|
||||
}
|
||||
if (mgr->identity) {
|
||||
linphone_address_destroy(mgr->identity);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
94.23.19.176 sip2.linphone.org sip.example.org sipopen.example.org auth.example.org auth1.example.org auth2.example.org altname.linphone.org sip.wildcard1.linphone.org altname.wildcard2.linphone.org
|
||||
94.23.19.176 sip2.linphone.org sip.example.org sipopen.example.org auth.example.org auth1.example.org auth2.example.org altname.linphone.org sip.wildcard1.linphone.org altname.wildcard2.linphone.org sipv4.example.org
|
||||
2001:41d0:2:14b0::1 sip2.linphone.org sip.example.org sipopen.example.org auth.example.org auth1.example.org auth2.example.org altname.linphone.org sip.wildcard1.linphone.org altname.wildcard2.linphone.org
|
||||
188.165.46.90 tunnel.wildcard2.linphone.org
|
||||
64:ff9b::94.23.19.176 sipv4.example.org
|
||||
64:ff9b::94.23.19.176 sipv4-nat64.example.org
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue