static void process_io_error(void *user_ctx, const belle_sip_io_error_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_io_error, exiting main loop"); belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); io_error_count++; /*CU_ASSERT(CU_FALSE);*/ }
static void client_process_auth_requested(void *obj, belle_sip_auth_event_t *event){ BELLESIP_UNUSED(obj); belle_sip_message("process_auth_requested requested for [%s@%s]" ,belle_sip_auth_event_get_username(event) ,belle_sip_auth_event_get_realm(event)); belle_sip_auth_event_set_passwd(event,PASSWD); }
belle_sip_request_t* build_request(belle_sip_stack_t * stack , belle_sip_provider_t *prov ,belle_sip_header_address_t* from ,belle_sip_header_address_t* to ,belle_sip_header_address_t* route ,const char* method) { belle_sip_header_from_t* from_header; belle_sip_header_to_t* to_header; belle_sip_request_t *req; belle_sip_uri_t* req_uri; belle_sip_header_contact_t* contact_header; BELLESIP_UNUSED(stack); from_header = belle_sip_header_from_create(from,BELLE_SIP_RANDOM_TAG); to_header = belle_sip_header_to_create(to,NULL); req_uri = (belle_sip_uri_t*)belle_sip_object_clone((belle_sip_object_t*)belle_sip_header_address_get_uri((belle_sip_header_address_t*)to_header)); contact_header= belle_sip_header_contact_new(); belle_sip_header_address_set_uri((belle_sip_header_address_t*)contact_header,belle_sip_uri_new()); belle_sip_uri_set_user(belle_sip_header_address_get_uri((belle_sip_header_address_t*)contact_header),belle_sip_uri_get_user(req_uri)); req=belle_sip_request_create( req_uri, method, belle_sip_provider_create_call_id(prov), belle_sip_header_cseq_create(20,method), from_header, to_header, belle_sip_header_via_new(), 70); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(contact_header)); if (route) { belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_route_create(route))); } return req; }
static void a_resolve_done(void *data, const char *name, struct addrinfo *ai_list) { endpoint_t *client = (endpoint_t *)data; BELLESIP_UNUSED(name); client->resolve_done = 1; if (ai_list) { client->ai_list = ai_list; client->resolve_done = 1; } else client->resolve_ko = 1; }
static void srv_resolve_done(void *data, const char *name, belle_sip_list_t *srv_list) { endpoint_t *client = (endpoint_t *)data; BELLESIP_UNUSED(name); client->resolve_done = 1; if (srv_list) { client->srv_list = srv_list; client->resolve_done = 1; } else client->resolve_ko = 1; }
static void process_message_response_event(void *user_ctx, const belle_sip_response_event_t *event){ int status; BELLESIP_UNUSED(user_ctx); CU_ASSERT_PTR_NOT_NULL_FATAL(belle_sip_response_event_get_response(event)); belle_sip_message("process_response_event [%i] [%s]" ,status=belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)) ,belle_sip_response_get_reason_phrase(belle_sip_response_event_get_response(event))); if (status >= 200){ is_register_ok=status; belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } }
static void belle_sip_refresher_listener (belle_sip_refresher_t* refresher ,void* user_pointer ,unsigned int status_code ,const char* reason_phrase) { endpoint_t* endpoint = (endpoint_t*)user_pointer; BELLESIP_UNUSED(refresher); belle_sip_message("belle_sip_refresher_listener [%i] reason [%s]",status_code,reason_phrase); switch (status_code) { case 200:endpoint->stat.refreshOk++; break; default: endpoint->stat.refreshKo++; break; } if (endpoint->stat.refreshKo==1 && endpoint->transiant_network_failure) { belle_sip_stack_set_send_error(endpoint->stack,0); } else if (endpoint->stat.refreshOk==1 && endpoint->transiant_network_failure) { /*generate a network failure*/ belle_sip_refresher_set_retry_after(endpoint->refresher,100); belle_sip_stack_set_send_error(endpoint->stack,-1); } }
static void process_auth_requested(void *user_ctx, belle_sip_auth_event_t *event){ BELLESIP_UNUSED(user_ctx); if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_HTTP_DIGEST) { const char *username = belle_sip_auth_event_get_username(event); const char *realm = belle_sip_auth_event_get_realm(event); belle_sip_message("process_auth_requested requested for [%s@%s]" ,username?username:"" ,realm?realm:""); belle_sip_auth_event_set_passwd(event,"secret"); } else if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_TLS) { const char *distinguished_name = NULL; belle_sip_certificates_chain_t* cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert,strlen(belle_sip_tester_client_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); belle_sip_signing_key_t* key = belle_sip_signing_key_parse(belle_sip_tester_private_key,strlen(belle_sip_tester_private_key),belle_sip_tester_private_key_passwd); belle_sip_auth_event_set_client_certificates_chain(event,cert); belle_sip_auth_event_set_signing_key(event,key); distinguished_name = belle_sip_auth_event_get_distinguished_name(event); belle_sip_message("process_auth_requested requested for DN[%s]",distinguished_name?distinguished_name:""); } else { belle_sip_error("Unexpected auth mode"); } }
static void process_response_event(void *user_ctx, const belle_sip_response_event_t *event){ int status; belle_sip_request_t* request; BELLESIP_UNUSED(user_ctx); CU_ASSERT_PTR_NOT_NULL_FATAL(belle_sip_response_event_get_response(event)); belle_sip_message("process_response_event [%i] [%s]" ,status=belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)) ,belle_sip_response_get_reason_phrase(belle_sip_response_event_get_response(event))); if (status==401){ belle_sip_header_cseq_t* cseq; belle_sip_client_transaction_t *t; belle_sip_uri_t *dest; // CU_ASSERT_NOT_EQUAL_FATAL(number_of_challenge,2); CU_ASSERT_PTR_NOT_NULL_FATAL(belle_sip_response_event_get_client_transaction(event)); /*require transaction mode*/ dest=belle_sip_client_transaction_get_route(belle_sip_response_event_get_client_transaction(event)); request=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(belle_sip_response_event_get_client_transaction(event))); cseq=(belle_sip_header_cseq_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_CSEQ); belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+1); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_AUTHORIZATION); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_PROXY_AUTHORIZATION); CU_ASSERT_TRUE_FATAL(belle_sip_provider_add_authorization(prov,request,belle_sip_response_event_get_response(event),NULL,NULL,auth_domain)); t=belle_sip_provider_create_client_transaction(prov,request); belle_sip_client_transaction_send_request_to(t,dest); number_of_challenge++; authorized_request=request; belle_sip_object_ref(authorized_request); } else { CU_ASSERT_EQUAL(status,200); is_register_ok=1; using_transaction=belle_sip_response_event_get_client_transaction(event)!=NULL; belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } }
static void process_io_error(void *user_ctx, const belle_sip_io_error_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_io_error not implemented yet"); }
static void process_dialog_terminated(void *user_ctx, const belle_sip_dialog_terminated_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_dialog_terminated not implemented yet"); }
static void process_request_event(void *user_ctx, const belle_sip_request_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_request_event"); }
static void process_transaction_terminated(void *user_ctx, const belle_sip_transaction_terminated_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_transaction_terminated"); }