diff --git a/.cproject b/.cproject
index 070162890..02473afca 100644
--- a/.cproject
+++ b/.cproject
@@ -35,6 +35,10 @@
+
+
+
+
@@ -198,4 +202,5 @@
+
diff --git a/coreapi/bellesip_sal/sal_address_impl.c b/coreapi/bellesip_sal/sal_address_impl.c
index 86415ad0f..5c210878c 100644
--- a/coreapi/bellesip_sal/sal_address_impl.c
+++ b/coreapi/bellesip_sal/sal_address_impl.c
@@ -23,11 +23,12 @@ SalAddress * sal_address_new(const char *uri){
belle_sip_header_address_t* result;
if (uri) {
result=belle_sip_header_address_parse (uri);
+ /*may return NULL*/
} else {
result = belle_sip_header_address_new();
belle_sip_header_address_set_uri(result,belle_sip_uri_new());
}
- belle_sip_object_ref(result);
+ if (result) belle_sip_object_ref(result);
return (SalAddress *)result;
}
SalAddress * sal_address_clone(const SalAddress *addr){
diff --git a/coreapi/bellesip_sal/sal_impl.c b/coreapi/bellesip_sal/sal_impl.c
index 95e630d3c..ab2700d05 100644
--- a/coreapi/bellesip_sal/sal_impl.c
+++ b/coreapi/bellesip_sal/sal_impl.c
@@ -534,3 +534,6 @@ int sal_reset_transports(Sal *ctx){
void sal_set_dscp(Sal *ctx, int dscp){
ms_warning("sal_set_dscp not implemented");
}
+void sal_set_send_error(Sal *sal,int value) {
+ belle_sip_stack_set_send_error(sal->stack,value);
+}
diff --git a/coreapi/bellesip_sal/sal_impl.h b/coreapi/bellesip_sal/sal_impl.h
index c71a84417..8a206be24 100644
--- a/coreapi/bellesip_sal/sal_impl.h
+++ b/coreapi/bellesip_sal/sal_impl.h
@@ -55,7 +55,7 @@ struct SalOp{
belle_sip_server_transaction_t* pending_server_trans;
belle_sip_client_transaction_t* pending_inv_client_trans;
SalAuthInfo* auth_info;
- unsigned long int registration_refresh_timer;
+ belle_sip_refresher_t* registration_refresher;
bool_t sdp_offering;
belle_sip_dialog_t* dialog;
belle_sip_header_address_t *replaces;
@@ -83,7 +83,7 @@ void sal_op_resend_request(SalOp* op, belle_sip_request_t* request);
void sal_process_authentication(SalOp *op, belle_sip_response_t *response);
bool_t sal_compute_sal_errors(belle_sip_response_t* response,SalError* sal_err,SalReason* sal_reason,char* reason, size_t reason_size);
-
+void sal_compute_sal_errors_from_code(int code ,SalError* sal_err,SalReason* sal_reason) ;
/*presence*/
void sal_op_presence_fill_cbs(SalOp*op);
diff --git a/coreapi/bellesip_sal/sal_op_impl.c b/coreapi/bellesip_sal/sal_op_impl.c
index 84957f36a..bd5af0598 100644
--- a/coreapi/bellesip_sal/sal_op_impl.c
+++ b/coreapi/bellesip_sal/sal_op_impl.c
@@ -28,11 +28,12 @@ SalOp * sal_op_new(Sal *sal){
void sal_op_release(SalOp *op){
if (op->request) belle_sip_object_unref(op->request);
- if (op->registration_refresh_timer>0) {
- belle_sip_main_loop_cancel_source(belle_sip_stack_get_main_loop(op->base.root->stack),op->registration_refresh_timer);
- }
if (op->auth_info) sal_auth_info_delete(op->auth_info);
if (op->sdp_answer) belle_sip_object_unref(op->sdp_answer);
+ if (op->registration_refresher) {
+ belle_sip_refresher_stop(op->registration_refresher);
+ belle_sip_object_unref(op->registration_refresher);
+ }
__sal_op_free(op);
return ;
}
@@ -115,12 +116,19 @@ int sal_op_send_request(SalOp* op, belle_sip_request_t* request) {
belle_sip_client_transaction_t* client_transaction;
belle_sip_provider_t* prov=op->base.root->prov;
belle_sip_header_route_t* route_header;
+ belle_sip_uri_t* outbound_proxy=NULL;
MSList* iterator;
if (!op->dialog) {
/*don't put route header if dialog is in confirmed state*/
for(iterator=(MSList*)sal_op_get_route_addresses(op);iterator!=NULL;iterator=iterator->next) {
- route_header = belle_sip_header_route_create(BELLE_SIP_HEADER_ADDRESS(iterator->data));
- belle_sip_message_add_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_HEADER(route_header));
+ if(!outbound_proxy) {
+ /*first toute is outbound proxy*/
+ outbound_proxy=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(iterator->data));
+ } else {
+ /*next are Route headers*/
+ route_header = belle_sip_header_route_create(BELLE_SIP_HEADER_ADDRESS(iterator->data));
+ belle_sip_message_add_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_HEADER(route_header));
+ }
}
}
@@ -135,26 +143,11 @@ int sal_op_send_request(SalOp* op, belle_sip_request_t* request) {
/*hmm just in case we already have authentication param in cache*/
belle_sip_provider_add_authorization(op->base.root->prov,request,NULL,NULL);
}
- return belle_sip_client_transaction_send_request(client_transaction);
+ return belle_sip_client_transaction_send_request_to(client_transaction,outbound_proxy/*might be null*/);
}
-/*return TRUE if error code*/
-bool_t sal_compute_sal_errors(belle_sip_response_t* response,SalError* sal_err,SalReason* sal_reason,char* reason, size_t reason_size) {
- int code = belle_sip_response_get_status_code(response);
- belle_sip_header_t* reason_header = belle_sip_message_get_header(BELLE_SIP_MESSAGE(response),"Reason");
- *sal_err=SalErrorUnknown;
- *sal_reason = SalReasonUnknown;
- if (reason_header){
- snprintf(reason
- ,reason_size
- ,"%s %s"
- ,belle_sip_response_get_reason_phrase(response)
- ,belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(reason_header)));
- } else {
- strncpy(reason,belle_sip_response_get_reason_phrase(response),reason_size);
- }
- if (code >=400) {
+void sal_compute_sal_errors_from_code(int code ,SalError* sal_err,SalReason* sal_reason) {
switch(code) {
case 400:
*sal_err=SalErrorUnknown;
@@ -195,6 +188,25 @@ bool_t sal_compute_sal_errors(belle_sip_response_t* response,SalError* sal_err,S
}else *sal_err=SalErrorNoResponse;
/* no break */
}
+}
+/*return TRUE if error code*/
+bool_t sal_compute_sal_errors(belle_sip_response_t* response,SalError* sal_err,SalReason* sal_reason,char* reason, size_t reason_size) {
+ int code = belle_sip_response_get_status_code(response);
+ belle_sip_header_t* reason_header = belle_sip_message_get_header(BELLE_SIP_MESSAGE(response),"Reason");
+ *sal_err=SalErrorUnknown;
+ *sal_reason = SalReasonUnknown;
+
+ if (reason_header){
+ snprintf(reason
+ ,reason_size
+ ,"%s %s"
+ ,belle_sip_response_get_reason_phrase(response)
+ ,belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(reason_header)));
+ } else {
+ strncpy(reason,belle_sip_response_get_reason_phrase(response),reason_size);
+ }
+ if (code>400) {
+ sal_compute_sal_errors_from_code(code,sal_err,sal_reason);
return TRUE;
} else {
return FALSE;
diff --git a/coreapi/bellesip_sal/sal_op_registration.c b/coreapi/bellesip_sal/sal_op_registration.c
index e94407598..d4c6c37eb 100644
--- a/coreapi/bellesip_sal/sal_op_registration.c
+++ b/coreapi/bellesip_sal/sal_op_registration.c
@@ -24,38 +24,51 @@ static void register_process_io_error(void *user_ctx, const belle_sip_io_error_e
ms_error("process_io_error not implemented yet");
}
-static void register_refresh(SalOp* op) {
- op->registration_refresh_timer=0;
- belle_sip_header_cseq_t* cseq=(belle_sip_header_cseq_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(op->request),BELLE_SIP_CSEQ);
- belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+1);
- sal_op_send_request(op,op->request);
+static void register_refresher_listener ( const belle_sip_refresher_t* refresher
+ ,void* user_pointer
+ ,unsigned int status_code
+ ,const char* reason_phrase) {
+ SalOp* op = (SalOp*)user_pointer;
+ SalError sal_err;
+ SalReason sal_reason;
+ ms_message("Register refresher [%i] reason [%s] for proxy [%s]",status_code,reason_phrase,sal_op_get_proxy(op));
+ if(status_code ==200) {
+ op->base.root->callbacks.register_success(op,belle_sip_refresher_get_expires(op->registration_refresher)>0);
+ } else if (status_code>=400) {
+ sal_compute_sal_errors_from_code(status_code,&sal_err,&sal_reason);
+ op->base.root->callbacks.register_failure(op,sal_err,sal_reason,reason_phrase);
+ } else {
+ ms_warning("Register refresher know what to do with this status code");
+ }
}
static void register_response_event(void *user_ctx, const belle_sip_response_event_t *event){
belle_sip_client_transaction_t* client_transaction = belle_sip_response_event_get_client_transaction(event);
SalOp* op = (SalOp*)belle_sip_transaction_get_application_data(BELLE_SIP_TRANSACTION(client_transaction));
belle_sip_response_t* response = belle_sip_response_event_get_response(event);
+/* belle_sip_request_t* original_request=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction));
belle_sip_header_expires_t* expires_header;
- belle_sip_request_t* original_request=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction));
belle_sip_header_contact_t* original_contact=belle_sip_message_get_header_by_type(original_request,belle_sip_header_contact_t);
const belle_sip_list_t* contact_header_list;
+ char* tmp_string;*/
+
+
belle_sip_header_service_route_t* service_route;
belle_sip_header_address_t* service_route_address=NULL;
int response_code = belle_sip_response_get_status_code(response);
- int expires=-1;
- char* tmp_string;
+ /*int expires=-1;*/
if (response_code<200) return;/*nothing to do*/
switch (response_code) {
case 200: {
- contact_header_list = belle_sip_message_get_headers(BELLE_SIP_MESSAGE(response),BELLE_SIP_CONTACT);
+/* contact_header_list = belle_sip_message_get_headers(BELLE_SIP_MESSAGE(response),BELLE_SIP_CONTACT);
if (contact_header_list) {
contact_header_list = belle_sip_list_find_custom((belle_sip_list_t*)contact_header_list,(belle_sip_compare_func)belle_sip_header_contact_not_equals, (const void*)original_contact);
if (!contact_header_list) {
- /*reset header list*/
+ reset header list
contact_header_list = belle_sip_message_get_headers(BELLE_SIP_MESSAGE(response),BELLE_SIP_CONTACT);
contact_header_list = belle_sip_list_find_custom((belle_sip_list_t*)contact_header_list,(belle_sip_compare_func)belle_sip_header_contact_not_equals, (const void*)sal_op_get_contact_address(op));
}
@@ -69,7 +82,7 @@ static void register_response_event(void *user_ctx, const belle_sip_response_eve
}
if (expires<0 ) {
- /*no contact with expire, looking for Expires header*/
+ no contact with expire, looking for Expires header
if ((expires_header=(belle_sip_header_expires_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(response),BELLE_SIP_EXPIRES))) {
expires = belle_sip_header_expires_get_expires(expires_header);
}
@@ -79,7 +92,7 @@ static void register_response_event(void *user_ctx, const belle_sip_response_eve
expires = belle_sip_header_expires_get_expires(expires_header);
ms_message("Neither Expires header nor corresponding Contact header found, using expires value [%i] from request",expires);
}
- }
+ }*/
/*check service route rfc3608*/
if ((service_route=belle_sip_message_get_header_by_type(response,belle_sip_header_service_route_t))) {
service_route_address=belle_sip_header_address_create(NULL,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(service_route)));
@@ -87,14 +100,11 @@ static void register_response_event(void *user_ctx, const belle_sip_response_eve
sal_op_set_service_route(op,(const SalAddress*)service_route_address);
if (service_route_address) belle_sip_object_unref(service_route_address);
- op->base.root->callbacks.register_success(op,expires>0);
- /*always cancel pending refresh if any*/
- if (op->registration_refresh_timer>0) {
- belle_sip_main_loop_cancel_source(belle_sip_stack_get_main_loop(op->base.root->stack),op->registration_refresh_timer);
- op->registration_refresh_timer=0;
- }
- if (expires>0) {
- op->registration_refresh_timer = belle_sip_main_loop_add_timeout(belle_sip_stack_get_main_loop(op->base.root->stack),(belle_sip_source_func_t)register_refresh,op,expires*1000);
+ op->base.root->callbacks.register_success(op,TRUE);
+
+ if (/*expires>0 &&*/ !op->registration_refresher) {
+ op->registration_refresher = belle_sip_client_transaction_create_refresher(client_transaction);
+ belle_sip_refresher_set_listener(op->registration_refresher,register_refresher_listener,op);
}
break;
@@ -159,16 +169,13 @@ int sal_register(SalOp *op, const char *proxy, const char *from, int expires){
}
int sal_register_refresh(SalOp *op, int expires){
- belle_sip_header_cseq_t* cseq=(belle_sip_header_cseq_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(op->request),BELLE_SIP_CSEQ);
- belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+1);
- send_register_request_with_expires(op,op->request,expires);
- return 0;
+ if (op->registration_refresher)
+ return belle_sip_refresher_refresh(op->registration_refresher,expires);
+ else
+ return -1;
}
int sal_unregister(SalOp *op){
- belle_sip_header_cseq_t* cseq=(belle_sip_header_cseq_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(op->request),BELLE_SIP_CSEQ);
- belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+1);
- send_register_request_with_expires(op,op->request,0);
- return 0;
+ return sal_register_refresh(op,0);
}
diff --git a/coreapi/sal.c b/coreapi/sal.c
index f7f1f5f63..69c4cc04c 100644
--- a/coreapi/sal.c
+++ b/coreapi/sal.c
@@ -346,6 +346,9 @@ const char *sal_op_get_contact(const SalOp *op){
}
const char *sal_op_get_route(const SalOp *op){
+#ifdef BELLE_SIP
+ms_fatal("sal_op_get_route not supported, use sal_op_get_route_addresses instead");
+#endif
return ((SalOpBase*)op)->route;
}
diff --git a/coreapi/sal.h b/coreapi/sal.h
index 0beb66277..1084ebce6 100644
--- a/coreapi/sal.h
+++ b/coreapi/sal.h
@@ -488,4 +488,7 @@ void __sal_op_set_network_origin(SalOp *op, const char *origin /*a sip uri*/);
void __sal_op_set_network_origin_address(SalOp *op, SalAddress *origin);
void __sal_op_free(SalOp *b);
+/*test api*/
+/*0 for no error*/
+void sal_set_send_error(Sal *sal,int value);
#endif
diff --git a/tester/flexisip.conf b/tester/flexisip.conf
index 22acf0937..c59ed0a5e 100755
--- a/tester/flexisip.conf
+++ b/tester/flexisip.conf
@@ -278,7 +278,7 @@ max-expires=86400
# Minimum expire time for a REGISTER, in seconds.
# Default value: 60
-min-expires=60
+min-expires=1
# File containing the static records to add to database at startup.
# Format: one 'sip_uri contact_header' by line. Example:
@@ -466,11 +466,11 @@ sdp-port-range-max=65535
# a total bandwith below this value expressed in kbit/s. Use 0 to
# disable the feature
# Default value: 0
-h264-filtering-bandwidth=0
+#h264-filtering-bandwidth=0
# When above option is activated, keep one I frame over this number.
# Default value: 1
-h264-iframe-decim=1
+#h264-iframe-decim=1
##
## The purpose of the Transcoder module is to transparently transcode
diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c
index 5c9f9106d..b99b0871e 100644
--- a/tester/liblinphone_tester.c
+++ b/tester/liblinphone_tester.c
@@ -18,6 +18,8 @@
#include
#include "CUnit/Basic.h"
#include "linphonecore.h"
+#include "private.h"
+
const char *test_domain="sipopen.example.org";
const char *auth_domain="sip.example.org";
@@ -111,19 +113,33 @@ static void registration_state_changed(struct _LinphoneCore *lc, LinphoneProxyCo
}
}
+static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username) {
+ ms_message("Auth info requested for user id [%s] at realm [%s]\n"
+ ,username
+ ,realm);
+ stats* counters = (stats*)linphone_core_get_user_data(lc);
+ counters->number_of_auth_info_requested++;
+ LinphoneAuthInfo *info=linphone_auth_info_new(test_username,NULL,test_password,NULL,auth_domain); /*create authentication structure from identity*/
+ linphone_core_add_auth_info(lc,info); /*add authentication info to LinphoneCore*/
+}
-static LinphoneCore* create_lc() {
+static LinphoneCore* create_lc_with_auth(unsigned int with_auth) {
LinphoneCoreVTable v_table;
LinphoneCore* lc;
memset (&v_table,0,sizeof(v_table));
v_table.registration_state_changed=registration_state_changed;
+ if (with_auth) {
+ v_table.auth_info_requested=auth_info_requested;
+ }
lc = linphone_core_new(&v_table,NULL,NULL,NULL);
linphone_core_set_user_data(lc,&global_stat);
return lc;
}
-
-static void register_with_refresh(LinphoneCore* lc, bool_t refresh,const char* domain,const char* route) {
+static LinphoneCore* create_lc() {
+ return create_lc_with_auth(0);
+}
+static void register_with_refresh_base(LinphoneCore* lc, bool_t refresh,const char* domain,const char* route) {
int retry=0;
LCSipTransports transport = {5070,5070,0,5071};
@@ -141,7 +157,7 @@ static void register_with_refresh(LinphoneCore* lc, bool_t refresh,const char* d
const char* server_addr = linphone_address_get_domain(from);
linphone_proxy_config_enable_register(proxy_cfg,TRUE);
- linphone_proxy_config_expires(proxy_cfg,30);
+ linphone_proxy_config_expires(proxy_cfg,1);
if (route) {
linphone_proxy_config_set_route(proxy_cfg,route);
linphone_proxy_config_set_server_addr(proxy_cfg,route);
@@ -153,41 +169,70 @@ static void register_with_refresh(LinphoneCore* lc, bool_t refresh,const char* d
linphone_core_add_proxy_config(lc,proxy_cfg);
linphone_core_set_default_proxy(lc,proxy_cfg);
- while (counters->number_of_LinphoneRegistrationOk<1 && retry++ <20) {
+ while (counters->number_of_LinphoneRegistrationOk<1+(refresh!=0) && retry++ <310) {
linphone_core_iterate(lc);
ms_usleep(100000);
}
- CU_ASSERT_TRUE(linphone_proxy_config_is_registered(proxy_cfg));
- if (refresh) {
- /*wait until refresh*/
- while (counters->number_of_LinphoneRegistrationOk<2 && retry++ <310) {
- linphone_core_iterate(lc);
- ms_usleep(100000);
- }
- linphone_core_destroy(lc);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationNone,0);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationProgress,2);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationOk,2);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationCleared,1);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationFailed,0);
- } else {
- linphone_core_destroy(lc);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationNone,0);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationProgress,1);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationOk,1);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationCleared,1);
- CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationFailed,0);
- }
+ CU_ASSERT_TRUE_FATAL(linphone_proxy_config_is_registered(proxy_cfg));
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationNone,0);
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationProgress,1+(refresh!=0));
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationOk,1+(refresh!=0));
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationFailed,0);
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationCleared,0);
+
+}
+static void register_with_refresh(LinphoneCore* lc, bool_t refresh,const char* domain,const char* route) {
+ stats* counters = (stats*)linphone_core_get_user_data(lc);
+ register_with_refresh_base(lc,refresh,domain,route);
+ linphone_core_destroy(lc);
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationCleared,1);
}
+static void register_with_refresh_with_send_error(void) {
+ int retry=0;
+ LinphoneCore* lc = create_lc_with_auth(1);
+ stats* counters = (stats*)linphone_core_get_user_data(lc);
+ LinphoneAuthInfo *info=linphone_auth_info_new(test_username,NULL,test_password,NULL,auth_domain); /*create authentication structure from identity*/
+ linphone_core_add_auth_info(lc,info); /*add authentication info to LinphoneCore*/
+
+ register_with_refresh_base(lc,TRUE,auth_domain,NULL);
+ /*simultate a network error*/
+ sal_set_send_error(lc->sal, -1);
+ while (counters->number_of_LinphoneRegistrationFailed<1 && retry++ <20) {
+ linphone_core_iterate(lc);
+ ms_usleep(100000);
+ }
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationFailed,1);
+ linphone_core_destroy(lc);
+
+ CU_ASSERT_EQUAL(counters->number_of_LinphoneRegistrationCleared,0);
+
+}
static void simple_register(){
LinphoneCore* lc = create_lc();
stats* counters = (stats*)linphone_core_get_user_data(lc);
register_with_refresh(lc,FALSE,NULL,NULL);
CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,0);
}
+
+
+/*take care of min expires configuration from server*/
+static void simple_register_with_refresh() {
+ LinphoneCore* lc = create_lc();
+ stats* counters = (stats*)linphone_core_get_user_data(lc);
+ register_with_refresh(lc,TRUE,NULL,NULL);
+ CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,0);
+}
+
+static void simple_auth_register_with_refresh() {
+ LinphoneCore* lc = create_lc_with_auth(1);
+ stats* counters = (stats*)linphone_core_get_user_data(lc);
+ register_with_refresh(lc,TRUE,auth_domain,NULL);
+ CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,1);
+}
+
static void simple_tcp_register(){
char route[256];
sprintf(route,"sip:%s;transport=tcp",test_domain);
@@ -210,16 +255,7 @@ static void simple_authenticated_register(){
CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,0);
}
-static void auth_info_requested(LinphoneCore *lc, const char *realm, const char *username) {
- ms_message("Auth info requested for user id [%s] at realm [%s]\n"
- ,username
- ,realm);
- stats* counters = (stats*)linphone_core_get_user_data(lc);
- counters->number_of_auth_info_requested++;
- LinphoneAuthInfo *info=linphone_auth_info_new(test_username,NULL,test_password,NULL,auth_domain); /*create authentication structure from identity*/
- linphone_core_add_auth_info(lc,info); /*add authentication info to LinphoneCore*/
-}
static void authenticated_register_with_no_initial_credentials(){
LinphoneCoreVTable v_table;
@@ -654,7 +690,7 @@ CU_pSuite pSuite = CU_add_suite("Setup", init, uninit);
}
pSuite = CU_add_suite("Register", init, uninit);
- if (NULL == CU_add_test(pSuite, "simple register tester", simple_register)) {
+ if (NULL == CU_add_test(pSuite, "simple_register_tester", simple_register)) {
return CU_get_error();
}
if (NULL == CU_add_test(pSuite, "tcp register tester", simple_tcp_register)) {
@@ -669,6 +705,17 @@ CU_pSuite pSuite = CU_add_suite("Setup", init, uninit);
if (NULL == CU_add_test(pSuite, "register with digest auth tester without initial credentials", authenticated_register_with_no_initial_credentials)) {
return CU_get_error();
}
+ if (NULL == CU_add_test(pSuite, "simple_register_with_refresh", simple_register_with_refresh)) {
+ return CU_get_error();
+ }
+ if (NULL == CU_add_test(pSuite, "simple_auth_register_with_refresh", simple_auth_register_with_refresh)) {
+ return CU_get_error();
+ }
+ if (NULL == CU_add_test(pSuite, "register_with_refresh_with_send_error", register_with_refresh_with_send_error)) {
+ return CU_get_error();
+ }
+
+
if (NULL == CU_add_test(pSuite, "multi account", multiple_proxy)) {
return CU_get_error();
}