diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index 8e54af0426..b3d915964e 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Tue Mar 3 15:59:49 CST 2009 +Tue Mar 3 16:00:35 CST 2009 diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/Makefile.am b/libs/sofia-sip/libsofia-sip-ua/nua/Makefile.am index 86709a3c1b..18405129af 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/Makefile.am +++ b/libs/sofia-sip/libsofia-sip-ua/nua/Makefile.am @@ -55,8 +55,6 @@ check_nua_SOURCES = check_nua.c check_nua.h \ check_nua_LDADD = $(nua_libs) ${top_builddir}/s2check/libs2.a \ @CHECK_LIBS@ -check_nua_CFLAGS = $(CFLAGS) -I$(top_srcdir)/s2check - nua_libs = libnua.la \ ../iptsec/libiptsec.la \ ../ipt/libipt.la \ @@ -84,6 +82,6 @@ EXTRA_DIST = nua.docs $(BUILT_SOURCES) include $(top_srcdir)/rules/sofia.am -INCLUDES = ${INTERNAL_INCLUDES} +INCLUDES = ${INTERNAL_INCLUDES} -I$(top_srcdir)/s2check TAG_DLL_FLAGS = LIST=nua_tag_list diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/check_etsi.c b/libs/sofia-sip/libsofia-sip-ua/nua/check_etsi.c index 646fe06978..0646b30b0d 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/check_etsi.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/check_etsi.c @@ -71,7 +71,7 @@ static void etsi_setup(void) NUTAG_OUTBOUND("no-options-keepalive, no-validate"), TAG_END()); - soa = soa_create(NULL, s2->root, NULL); + soa = soa_create(NULL, s2base->root, NULL); fail_if(!soa); @@ -148,7 +148,7 @@ respond_with_sdp(struct message *request, fail_if(soa_get_local_sdp(soa, NULL, &body, &bodylen) != 1); ta_start(ta, tag, value); - s2_respond_to(request, dialog, status, phrase, + s2_sip_respond_to(request, dialog, status, phrase, SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(body), SIPTAG_CONTENT_DISPOSITION_STR("session"), @@ -168,7 +168,7 @@ invite_sent_by_nua(nua_handle_t *nh, fail_unless(s2_check_callstate(nua_callstate_calling)); - return s2_wait_for_request(SIP_METHOD_INVITE); + return s2_sip_wait_for_request(SIP_METHOD_INVITE); } static void @@ -182,10 +182,10 @@ bye_by_nua(struct dialog *dialog, nua_handle_t *nh, nua_bye(nh, ta_tags(ta)); ta_end(ta); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); } @@ -208,7 +208,7 @@ START_TEST(SIP_CC_OE_CE_V_019) "sends an ACK request with a To header identical to the " "received one for each received Success (200 OK) responses."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, TAG_END()); @@ -218,17 +218,17 @@ START_TEST(SIP_CC_OE_CE_V_019) fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); respond_with_sdp(invite, d2, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, d2, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, d2, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); bye_by_nua(d1, nh, TAG_END()); @@ -248,39 +248,39 @@ START_TEST(SIP_CC_OE_CE_TI_008) "that matches the transaction, still answer with an " "ACK request until timer D set to at least 32 second expires."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, TAG_END()); - s2_respond_to(invite, d1, 404, "First not found", TAG_END()); + s2_sip_respond_to(invite, d1, 404, "First not found", TAG_END()); fail_unless(s2_check_event(nua_r_invite, 404)); fail_unless(s2_check_callstate(nua_callstate_terminated)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); - s2_respond_to(invite, d1, 404, "Not found after 5 seconds", TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + s2_sip_respond_to(invite, d1, 404, "Not found after 5 seconds", TAG_END()); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); - s2_respond_to(invite, d1, 404, "Not found after 10 seconds", TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + s2_sip_respond_to(invite, d1, 404, "Not found after 10 seconds", TAG_END()); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(21, s2->root); + s2_nua_fast_forward(21, s2base->root); - s2_respond_to(invite, d1, 404, "Not found after 31 seconds", TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + s2_sip_respond_to(invite, d1, 404, "Not found after 31 seconds", TAG_END()); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); /* Wake up nua thread and let it time out INVITE transaction */ nua_set_params(s2->nua, TAG_END()); s2_check_event(nua_r_set_params, 0); - s2_respond_to(invite, d1, 404, "Not found after 32 seconds", TAG_END()); - s2_free_message(invite); - fail_if(s2_check_request_timeout(SIP_METHOD_ACK, 500)); + s2_sip_respond_to(invite, d1, 404, "Not found after 32 seconds", TAG_END()); + s2_sip_free_message(invite); + fail_if(s2_sip_check_request_timeout(SIP_METHOD_ACK, 3)); nua_handle_destroy(nh); } @@ -299,7 +299,7 @@ START_TEST(SIP_CC_OE_CE_TI_011_012) "on receipt of a retransmitted Success (200 OK) " "responses does not send an ACK request."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, TAG_END()); @@ -309,29 +309,29 @@ START_TEST(SIP_CC_OE_CE_TI_011_012) fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); respond_with_sdp(invite, d1, SIP_200_OK, TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); respond_with_sdp(invite, d1, SIP_200_OK, TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(21, s2->root); + s2_nua_fast_forward(20, s2base->root); respond_with_sdp(invite, d1, SIP_200_OK, TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - s2_fast_forward(5, s2->root); + /* Stack times out the INVITE transaction */ + s2_nua_fast_forward(5, s2base->root); - /* Wake up nua thread and let it time out INVITE transaction */ - nua_set_params(s2->nua, TAG_END()); - s2_check_event(nua_r_set_params, 0); - - respond_with_sdp(invite, d1, SIP_200_OK, TAG_END()); - s2_free_message(invite); - fail_if(s2_check_request_timeout(SIP_METHOD_ACK, 500)); + respond_with_sdp(invite, d1, SIP_200_OK, + SIPTAG_SUBJECT_STR("Stray 200 OK"), + TAG_END()); + s2_sip_free_message(invite); + mark_point(); + fail_if(s2_sip_check_request_timeout(SIP_METHOD_ACK, 3)); bye_by_nua(d1, nh, TAG_END()); diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.c b/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.c index 26eda73296..a0ab993b23 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/check_nua.c @@ -33,6 +33,7 @@ #include "config.h" +#include "test_s2.h" #include "check_nua.h" #include @@ -43,8 +44,6 @@ #include #endif -#include "test_s2.h" - static void usage(int exitcode) { fprintf(exitcode ? stderr : stdout, @@ -62,6 +61,8 @@ int main(int argc, char *argv[]) s2_tester = "check_nua"; + s2_suite("N2"); + if (getenv("CHECK_NUA_VERBOSE")) s2_start_stop = strtoul(getenv("CHECK_NUA_VERBOSE"), NULL, 10); diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c b/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c index bd65264053..b2971c8460 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/check_register.c @@ -75,7 +75,7 @@ static void pingpong_setup(void) TPTAG_PINGPONG(20000), TPTAG_KEEPALIVE(10000), TAG_END()); - tport_set_params(s2->tcp.tport, TPTAG_PONG2PING(1), TAG_END()); + tport_set_params(s2sip->tcp.tport, TPTAG_PONG2PING(1), TAG_END()); } static void pingpong_thread_setup(void) @@ -121,12 +121,12 @@ START_TEST(register_1_0_1) nua_register(nh, TAG_END()); - fail_unless((m = s2_wait_for_request(SIP_METHOD_REGISTER)) != NULL, NULL); + fail_unless((m = s2_sip_wait_for_request(SIP_METHOD_REGISTER)) != NULL, NULL); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_403_FORBIDDEN, TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); nua_handle_destroy(nh); @@ -156,38 +156,38 @@ START_TEST(register_1_1_2) nua_register(nh, TAG_END()); - m = s2_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); - s2_respond_to(m, NULL, + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); + s2_sip_respond_to(m, NULL, SIP_407_PROXY_AUTH_REQUIRED, SIPTAG_PROXY_AUTHENTICATE_STR(s2_auth_digest_str), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 407); nua_authenticate(nh, NUTAG_AUTH(s2_auth_credentials), TAG_END()); - m = s2_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); - s2_respond_to(m, NULL, + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); + s2_sip_respond_to(m, NULL, SIP_401_UNAUTHORIZED, SIPTAG_WWW_AUTHENTICATE_STR(s2_auth2_digest_str), SIPTAG_PROXY_AUTHENTICATE_STR(s2_auth_digest_str), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 401); nua_authenticate(nh, NUTAG_AUTH(s2_auth2_credentials), TAG_END()); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); fail_if(!m->sip->sip_proxy_authorization); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); assert(s2->registration->contact != NULL); s2_check_event(nua_r_register, 200); @@ -237,32 +237,32 @@ START_TEST(register_1_2_1) { nua_register(nh, TAG_END()); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_contact || m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); assert(s2->registration->contact != NULL); s2_check_event(nua_r_register, 100); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_contact || !m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); fail_unless(s2->registration->contact != NULL); fail_if(s2->registration->contact->m_next != NULL); @@ -286,19 +286,19 @@ static nua_handle_t *make_auth_natted_register( nua_register(nh, ta_tags(ta)); ta_end(ta); - m = s2_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); - s2_respond_to(m, NULL, + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); + s2_sip_respond_to(m, NULL, SIP_401_UNAUTHORIZED, SIPTAG_WWW_AUTHENTICATE_STR(s2_auth_digest_str), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 401); nua_authenticate(nh, NUTAG_AUTH(s2_auth_credentials), TAG_END()); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); /* should not unregister the previous contact @@ -307,12 +307,12 @@ static nua_handle_t *make_auth_natted_register( fail_if(m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); assert(s2->registration->contact != NULL); s2_check_event(nua_r_register, 200); @@ -350,61 +350,61 @@ START_TEST(register_1_2_2_2) mark_point(); - m = s2_wait_for_request(SIP_METHOD_OPTIONS); + m = s2_sip_wait_for_request(SIP_METHOD_OPTIONS); fail_if(!m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_407_PROXY_AUTH_REQUIRED, SIPTAG_VIA(natted_via(m)), SIPTAG_PROXY_AUTHENTICATE_STR(s2_auth_digest_str), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); mark_point(); - m = s2_wait_for_request(SIP_METHOD_OPTIONS); + m = s2_sip_wait_for_request(SIP_METHOD_OPTIONS); fail_if(!m); fail_if(!m->sip->sip_proxy_authorization); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); - su_root_step(s2->root, 20); su_root_step(s2->root, 20); - s2_fast_forward(120, s2->root); /* Default keepalive interval */ + su_root_step(s2base->root, 20); su_root_step(s2base->root, 20); + s2_nua_fast_forward(120, s2base->root); /* Default keepalive interval */ mark_point(); - m = s2_wait_for_request(SIP_METHOD_OPTIONS); - s2_respond_to(m, NULL, + m = s2_sip_wait_for_request(SIP_METHOD_OPTIONS); + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); - su_root_step(s2->root, 20); su_root_step(s2->root, 20); - s2_fast_forward(120, s2->root); /* Default keepalive interval */ + su_root_step(s2base->root, 20); su_root_step(s2base->root, 20); + s2_nua_fast_forward(120, s2base->root); /* Default keepalive interval */ mark_point(); receive_natted = "received=4.255.255.10"; - m = s2_wait_for_request(SIP_METHOD_OPTIONS); - s2_respond_to(m, NULL, + m = s2_sip_wait_for_request(SIP_METHOD_OPTIONS); + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_i_outbound, 0); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); fail_if(!m->sip->sip_contact || !m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 200); @@ -434,33 +434,33 @@ START_TEST(register_1_2_2_3) receive_natted = "received=4.255.255.10"; - s2_fast_forward(3600, s2->root); + s2_nua_fast_forward(3600, s2base->root); mark_point(); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 100); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); fail_if(!m->sip->sip_contact || !m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); fail_unless(s2->registration->contact != NULL); fail_if(s2->registration->contact->m_next != NULL); @@ -484,28 +484,28 @@ START_TEST(register_1_2_3) { mark_point(); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_contact || m->sip->sip_contact->m_next); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, 400, "Bad Contact", SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 100); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); fail_unless(s2->registration->contact != NULL); fail_if(s2->registration->contact->m_next != NULL); @@ -530,34 +530,34 @@ START_TEST(register_1_3_1) nh = nua_handle(nua, NULL, TAG_END()); - nua_register(nh, NUTAG_PROXY(s2->tcp.contact->m_url), TAG_END()); + nua_register(nh, NUTAG_PROXY(s2sip->tcp.contact->m_url), TAG_END()); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_contact || m->sip->sip_contact->m_next); fail_if(!tport_is_tcp(m->tport)); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); assert(s2->registration->contact != NULL); s2_check_event(nua_r_register, 100); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_contact || !m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); fail_unless(s2->registration->contact != NULL); fail_if(s2->registration->contact->m_next != NULL); @@ -581,7 +581,7 @@ START_TEST(register_1_3_2_1) mark_point(); s2->registration->nh = nh; - make_auth_natted_register(nh, NUTAG_PROXY(s2->tcp.contact->m_url), TAG_END()); + make_auth_natted_register(nh, NUTAG_PROXY(s2sip->tcp.contact->m_url), TAG_END()); fail_if(!tport_is_tcp(s2->registration->tport)); s2_register_teardown(); } @@ -604,38 +604,38 @@ START_TEST(register_1_3_2_2) mark_point(); s2->registration->nh = nh; make_auth_natted_register( - nh, NUTAG_PROXY(s2->tcp.contact->m_url), + nh, NUTAG_PROXY(s2sip->tcp.contact->m_url), NUTAG_OUTBOUND("no-options-keepalive, no-validate"), TAG_END()); fail_if(!tport_is_tcp(s2->registration->tport)); tport_shutdown(s2->registration->tport, 2); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); /* The "NAT binding" changed when new TCP connection is established */ /* => NUA re-REGISTERs with newly detected contact */ s2_check_event(nua_r_register, 100); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); fail_if(!m->sip->sip_contact || !m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 200); @@ -667,22 +667,22 @@ START_TEST(register_1_3_3_1) /* NTA tries with UDP, we drop them */ for (;;) { - m = s2_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); if (!tport_is_udp(m->tport)) /* Drop UDP */ break; - s2_free_message(m); - s2_fast_forward(4, s2->root); + s2_sip_free_message(m); + s2_nua_fast_forward(4, s2base->root); } tcp = tport_ref(m->tport); /* Respond to request over TCP */ - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_401_UNAUTHORIZED, SIPTAG_WWW_AUTHENTICATE_STR(s2_auth_digest_str), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 401); nua_authenticate(nh, NUTAG_AUTH(s2_auth_credentials), TAG_END()); @@ -690,32 +690,32 @@ START_TEST(register_1_3_3_1) tport_set_params(tcp, TPTAG_PONG2PING(0), TAG_END()); /* Now request over UDP ... registering TCP contact! */ - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); s2_save_register(m); fail_unless( url_has_param(s2->registration->contact->m_url, "transport=tcp")); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); /* NUA detects oops... re-registers UDP */ s2_check_event(nua_r_register, 100); - m = s2_wait_for_request(SIP_METHOD_REGISTER); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); fail_if(!m); fail_if(!m->sip->sip_authorization); fail_if(!m->sip->sip_contact || !m->sip->sip_contact->m_next); s2_save_register(m); - s2_respond_to(m, NULL, + s2_sip_respond_to(m, NULL, SIP_200_OK, SIPTAG_CONTACT(s2->registration->contact), SIPTAG_VIA(natted_via(m)), TAG_END()); - s2_free_message(m); + s2_sip_free_message(m); s2_check_event(nua_r_register, 200); @@ -726,10 +726,10 @@ START_TEST(register_1_3_3_1) { int i; for (i = 0; i < 5; i++) { - su_root_step(s2->root, 5); - su_root_step(s2->root, 5); - su_root_step(s2->root, 5); - s2_fast_forward(5, s2->root); + su_root_step(s2base->root, 5); + su_root_step(s2base->root, 5); + su_root_step(s2base->root, 5); + s2_nua_fast_forward(5, s2base->root); } } diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/check_session.c b/libs/sofia-sip/libsofia-sip-ua/nua/check_session.c index 5598d2aa28..5e3639471d 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/check_session.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/check_session.c @@ -68,7 +68,7 @@ static void call_setup(void) NUTAG_OUTBOUND("no-options-keepalive, no-validate"), TAG_END()); - soa = soa_create(NULL, s2->root, NULL); + soa = soa_create(NULL, s2base->root, NULL); fail_if(!soa); @@ -161,7 +161,7 @@ respond_with_sdp(struct message *request, fail_if(soa_get_local_sdp(soa, NULL, &body, &bodylen) != 1); ta_start(ta, tag, value); - s2_respond_to(request, dialog, status, phrase, + s2_sip_respond_to(request, dialog, status, phrase, SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(body), SIPTAG_CONTENT_DISPOSITION_STR("session"), @@ -184,7 +184,7 @@ request_with_sdp(struct dialog *dialog, ta_start(ta, tag, value); fail_if( - s2_request_to(dialog, method, name, tport, + s2_sip_request_to(dialog, method, name, tport, SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(body), ta_tags(ta))); @@ -203,7 +203,7 @@ invite_sent_by_nua(nua_handle_t *nh, fail_unless(s2_check_callstate(nua_callstate_calling)); - return s2_wait_for_request(SIP_METHOD_INVITE); + return s2_sip_wait_for_request(SIP_METHOD_INVITE); } static uint32_t s2_rseq; @@ -233,7 +233,7 @@ respond_with_100rel(struct message *invite, ta_tags(ta)); } else { - s2_respond_to( + s2_sip_respond_to( invite, dialog, status, phrase, SIPTAG_REQUIRE_STR("100rel"), SIPTAG_RSEQ(rs), @@ -243,7 +243,7 @@ respond_with_100rel(struct message *invite, fail_unless(s2_check_event(nua_r_invite, status)); - return s2_wait_for_request(SIP_METHOD_PRACK); + return s2_sip_wait_for_request(SIP_METHOD_PRACK); } static void @@ -267,10 +267,10 @@ invite_by_nua(nua_handle_t *nh, fail_unless(s2_check_callstate(nua_callstate_proceeding)); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); } static nua_handle_t * @@ -295,7 +295,7 @@ invite_to_nua(tag_type_t tag, tag_value_t value, ...) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); nua_respond(nh, SIP_180_RINGING, @@ -303,23 +303,23 @@ invite_to_nua(tag_type_t tag, tag_value_t value, ...) TAG_END()); fail_unless(s2_check_callstate(nua_callstate_early)); - response = s2_wait_for_response(180, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(180, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); + s2_sip_update_dialog(dialog, response); process_answer(response); - s2_free_message(response); + s2_sip_free_message(response); nua_respond(nh, SIP_200_OK, TAG_END()); fail_unless(s2_check_callstate(nua_callstate_completed)); - response = s2_wait_for_response(200, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(200, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); - s2_free_message(response); + s2_sip_update_dialog(dialog, response); + s2_sip_free_message(response); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); fail_unless(s2_check_event(nua_i_ack, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -338,10 +338,10 @@ bye_by_nua(nua_handle_t *nh, nua_bye(nh, ta_tags(ta)); ta_end(ta); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); } @@ -359,19 +359,19 @@ bye_by_nua_challenged(nua_handle_t *nh, nua_bye(nh, ta_tags(ta)); ta_end(ta); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, + s2_sip_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, SIPTAG_PROXY_AUTHENTICATE_STR(s2_auth_digest_str), TAG_END()); - s2_free_message(bye); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 407)); nua_authenticate(nh, NUTAG_AUTH("Digest:\"s2test\":abc:abc"), TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); fail_if(s2->events); @@ -391,14 +391,14 @@ cancel_by_nua(nua_handle_t *nh, nua_cancel(nh, ta_tags(ta)); ta_end(ta); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); - s2_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(cancel); fail_unless(s2_check_event(nua_r_cancel, 200)); - s2_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + s2_sip_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); fail_unless(s2_check_event(nua_r_invite, 487)); } @@ -410,12 +410,12 @@ bye_to_nua(nua_handle_t *nh, ta_list ta; ta_start(ta, tag, value); - fail_if(s2_request_to(dialog, SIP_METHOD_BYE, NULL, ta_tags(ta))); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_BYE, NULL, ta_tags(ta))); ta_end(ta); fail_unless(s2_check_event(nua_i_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); - fail_unless(s2_check_response(200, SIP_METHOD_BYE)); + fail_unless(s2_sip_check_response(200, SIP_METHOD_BYE)); } /* ====================================================================== */ @@ -430,7 +430,7 @@ START_TEST(call_2_1_1) s2_case("2.1.1", "Basic call", "NUA sends INVITE, NUA sends BYE"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, TAG_END()); @@ -448,7 +448,7 @@ START_TEST(call_2_1_2_1) s2_case("2.1.2.1", "Basic call", "NUA sends INVITE, NUA receives BYE"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, TAG_END()); @@ -465,11 +465,11 @@ START_TEST(call_2_1_2_2) s2_case("2.1.2.2", "Basic call over TCP", "NUA sends INVITE, NUA receives BYE"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, - NUTAG_PROXY(s2->tcp.contact->m_url), + NUTAG_PROXY(s2sip->tcp.contact->m_url), TAG_END()); bye_to_nua(nh, TAG_END()); @@ -502,7 +502,7 @@ START_TEST(call_2_1_3_2) s2_case("2.1.3.2", "Incoming call over TCP", "NUA receives INVITE and BYE"); - dialog->tport = s2->tcp.tport; + dialog->tport = s2sip->tcp.tport; nh = invite_to_nua(TAG_END()); @@ -569,44 +569,44 @@ START_TEST(call_2_1_6) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); nua_respond(nh, SIP_180_RINGING, /* Dialog-specific proxy is saved */ - NUTAG_PROXY(s2->tcp.contact->m_url), + NUTAG_PROXY(s2sip->tcp.contact->m_url), SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), TAG_END()); fail_unless(s2_check_callstate(nua_callstate_early)); - response = s2_wait_for_response(180, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(180, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); + s2_sip_update_dialog(dialog, response); process_answer(response); - s2_free_message(response); + s2_sip_free_message(response); nua_respond(nh, SIP_200_OK, TAG_END()); fail_unless(s2_check_callstate(nua_callstate_completed)); - response = s2_wait_for_response(200, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(200, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); - s2_free_message(response); + s2_sip_update_dialog(dialog, response); + s2_sip_free_message(response); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); fail_unless(s2_check_event(nua_i_ack, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); /* Check that NUA used dialog-specific proxy with BYE */ fail_unless(tport_is_tcp(bye->tport)); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); @@ -623,7 +623,7 @@ START_TEST(call_2_1_7) s2_case("2.1.7", "Call lookup", "Test dialog and call-id lookup"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, TAG_END()); @@ -656,11 +656,11 @@ START_TEST(call_2_1_8) s2_case("2.1.8", "Call using NUTAG_PROXY()", "Test handle-specific NUTAG_PROXY()."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua( nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), - NUTAG_PROXY(s2->tcp.contact->m_url), TAG_END()); + NUTAG_PROXY(s2sip->tcp.contact->m_url), TAG_END()); process_offer(invite); respond_with_sdp( @@ -672,10 +672,10 @@ START_TEST(call_2_1_8) fail_unless(s2_check_callstate(nua_callstate_proceeding)); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_unless(ack && tport_is_tcp(ack->tport)); bye_by_nua(nh, TAG_END()); @@ -715,23 +715,23 @@ START_TEST(cancel_2_2_1) s2_case("2.2.1", "Cancel call", "NUA is caller, NUA sends CANCEL immediately"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_invite(nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), TAG_END()); fail_unless(s2_check_callstate(nua_callstate_calling)); nua_cancel(nh, TAG_END()); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); - fail_if(s2->received != NULL); - s2_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + fail_if(s2sip->received != NULL); + s2_sip_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); - s2_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); - s2_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); + s2_sip_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); fail_unless(s2_check_event(nua_r_invite, 487)); fail_unless(s2_check_callstate(nua_callstate_terminated)); @@ -751,15 +751,15 @@ START_TEST(cancel_2_2_2) s2_case("2.2.2", "Canceled call", "NUA is caller, NUA sends CANCEL after receiving 100"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_invite(nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), TAG_END()); fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); process_offer(invite); - s2_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); cancel_by_nua(nh, invite, dialog, TAG_END()); @@ -778,13 +778,13 @@ START_TEST(cancel_2_2_3) s2_case("2.2.3", "Canceled call", "NUA is caller, NUA sends CANCEL after receiving 180"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_invite(nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), TAG_END()); fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); process_offer(invite); respond_with_sdp( invite, dialog, SIP_180_RINGING, @@ -810,13 +810,13 @@ START_TEST(cancel_2_2_4) "NUA is caller, NUA sends CANCEL after receiving 180 " "but UAS already sent 200 OK."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_invite(nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), TAG_END()); fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); process_offer(invite); respond_with_sdp( invite, dialog, SIP_180_RINGING, @@ -826,16 +826,16 @@ START_TEST(cancel_2_2_4) fail_unless(s2_check_callstate(nua_callstate_proceeding)); nua_cancel(nh, TAG_END()); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_respond_to(cancel, dialog, SIP_481_NO_TRANSACTION, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_481_NO_TRANSACTION, TAG_END()); + s2_sip_free_message(cancel); fail_unless(s2_check_event(nua_r_cancel, 481)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -858,14 +858,14 @@ START_TEST(cancel_2_2_5) "but UAS already sent 200 OK.\n" "Test case checks that NUA really sends BYE after nua_bye() is called\n"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_invite(nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), NUTAG_AUTOACK(0), TAG_END()); fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); process_offer(invite); respond_with_sdp( invite, dialog, SIP_180_RINGING, @@ -875,23 +875,23 @@ START_TEST(cancel_2_2_5) fail_unless(s2_check_callstate(nua_callstate_proceeding)); nua_bye(nh, TAG_END()); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_respond_to(cancel, dialog, SIP_481_NO_TRANSACTION, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_481_NO_TRANSACTION, TAG_END()); + s2_sip_free_message(cancel); fail_unless(s2_check_event(nua_r_cancel, 481)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); fail_unless(s2_check_callstate(nua_callstate_terminating)); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); @@ -919,7 +919,7 @@ START_TEST(cancel_2_2_6) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); nua_respond(nh, SIP_180_RINGING, @@ -927,22 +927,22 @@ START_TEST(cancel_2_2_6) TAG_END()); fail_unless(s2_check_callstate(nua_callstate_early)); - response = s2_wait_for_response(180, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(180, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); + s2_sip_update_dialog(dialog, response); process_answer(response); - s2_free_message(response); + s2_sip_free_message(response); - fail_if(s2_request_to(dialog, SIP_METHOD_CANCEL, NULL, TAG_END())); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_CANCEL, NULL, TAG_END())); fail_unless(s2_check_event(nua_i_cancel, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); - response = s2_wait_for_response(200, SIP_METHOD_CANCEL); + response = s2_sip_wait_for_response(200, SIP_METHOD_CANCEL); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); - response = s2_wait_for_response(487, SIP_METHOD_INVITE); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, + response = s2_sip_wait_for_response(487, SIP_METHOD_INVITE); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, SIPTAG_VIA(sip_object(dialog->invite)->sip_via), TAG_END())); @@ -974,7 +974,7 @@ START_TEST(cancel_2_2_7) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); nua_respond(nh, SIP_180_RINGING, @@ -982,22 +982,22 @@ START_TEST(cancel_2_2_7) TAG_END()); fail_unless(s2_check_callstate(nua_callstate_early)); - response = s2_wait_for_response(180, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(180, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); + s2_sip_update_dialog(dialog, response); process_answer(response); - s2_free_message(response); + s2_sip_free_message(response); - fail_if(s2_request_to(dialog, SIP_METHOD_CANCEL, NULL, TAG_END())); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_CANCEL, NULL, TAG_END())); fail_unless(s2_check_event(nua_i_cancel, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); - response = s2_wait_for_response(200, SIP_METHOD_CANCEL); + response = s2_sip_wait_for_response(200, SIP_METHOD_CANCEL); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); - response = s2_wait_for_response(487, SIP_METHOD_INVITE); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, + response = s2_sip_wait_for_response(487, SIP_METHOD_INVITE); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, SIPTAG_VIA(sip_object(dialog->invite)->sip_via), TAG_END())); @@ -1082,7 +1082,7 @@ invite_timer_round(nua_handle_t *nh, struct message *invite, *ack; fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); process_offer(invite); respond_with_sdp( invite, dialog, SIP_200_OK, @@ -1090,12 +1090,12 @@ invite_timer_round(nua_handle_t *nh, SIPTAG_REQUIRE_STR("timer"), SIPTAG_RECORD_ROUTE(rr), TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); if (rr == NULL) - s2_free_message(ack); + s2_sip_free_message(ack); return ack; } @@ -1106,7 +1106,7 @@ START_TEST(call_2_3_1) struct message *ack; sip_record_route_init(rr); - *rr->r_url = *s2->contact->m_url; + *rr->r_url = *s2sip->contact->m_url; rr->r_url->url_user = "record"; rr->r_url->url_params = "lr"; @@ -1121,11 +1121,11 @@ START_TEST(call_2_3_1) SIPTAG_REQUIRE_STR("timer"), TAG_END()); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); ack = invite_timer_round(nh, "300;refresher=uac", rr); fail_if(ack->sip->sip_route && su_strmatch(ack->sip->sip_route->r_url->url_user, "record")); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); invite_timer_round(nh, "300;refresher=uac", NULL); bye_by_nua(nh, TAG_END()); @@ -1149,9 +1149,9 @@ START_TEST(call_2_3_2) SIPTAG_REQUIRE_STR("timer"), TAG_END()); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); invite_timer_round(nh, "300", NULL); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); invite_timer_round(nh, "300", NULL); bye_by_nua(nh, TAG_END()); @@ -1190,11 +1190,11 @@ START_TEST(call_2_4_1) "receives 200, send ACK."); sip_record_route_init(rr); - *rr->r_url = *s2->contact->m_url; + *rr->r_url = *s2sip->contact->m_url; rr->r_url->url_user = "record"; rr->r_url->url_params = "lr"; - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua( nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), @@ -1205,8 +1205,8 @@ START_TEST(call_2_4_1) SIP_183_SESSION_PROGRESS, SIPTAG_RECORD_ROUTE(rr), TAG_END()); - s2_respond_to(prack, dialog, SIP_200_OK, TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_respond_to(prack, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_callstate(nua_callstate_proceeding)); fail_unless(s2_check_event(nua_r_prack, 200)); @@ -1216,23 +1216,23 @@ START_TEST(call_2_4_1) fail_unless(prack->sip->sip_route != NULL); fail_unless(su_strmatch(prack->sip->sip_route->r_url->url_user, "record")); - s2_respond_to(prack, dialog, SIP_200_OK, TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_respond_to(prack, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_callstate(nua_callstate_proceeding)); fail_unless(s2_check_event(nua_r_prack, 200)); /* Change the record-route */ rr->r_url->url_user = "record2"; - s2_respond_to(invite, dialog, SIP_200_OK, + s2_sip_respond_to(invite, dialog, SIP_200_OK, SIPTAG_RECORD_ROUTE(rr), TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); fail_unless(su_strmatch(ack->sip->sip_route->r_url->url_user, "record2")); - s2_free_message(ack); + s2_sip_free_message(ack); bye_to_nua(nh, TAG_END()); @@ -1252,7 +1252,7 @@ START_TEST(call_2_4_2) "receives 180, sends PRACK, receives 200 for it, " "receives 200, send ACK."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua( nh, @@ -1269,24 +1269,24 @@ START_TEST(call_2_4_2) prack = respond_with_100rel(invite, dialog, with_sdp = 0, SIP_183_SESSION_PROGRESS, TAG_END()); - s2_respond_to(prack, dialog, SIP_200_OK, TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_respond_to(prack, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_callstate(nua_callstate_proceeding)); fail_unless(s2_check_event(nua_r_prack, 200)); prack = respond_with_100rel(invite, dialog, with_sdp = 0, SIP_180_RINGING, TAG_END()); - s2_respond_to(prack, dialog, SIP_200_OK, TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_respond_to(prack, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_callstate(nua_callstate_proceeding)); fail_unless(s2_check_event(nua_r_prack, 200)); - s2_respond_to(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); bye_to_nua(nh, TAG_END()); @@ -1321,7 +1321,7 @@ START_TEST(call_2_5_1) "receives 180, sends PRACK, receives 200 for it, " "receives 200, send ACK."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua( nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), @@ -1338,11 +1338,11 @@ START_TEST(call_2_5_1) prack, dialog, SIP_200_OK, SIPTAG_REQUIRE_STR("100rel"), TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_event(nua_r_prack, 200)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); - update = s2_wait_for_request(SIP_METHOD_UPDATE); + update = s2_sip_wait_for_request(SIP_METHOD_UPDATE); /* UPDATE sent by stack, stack sends event for it */ fail_unless(s2_check_callstate(nua_callstate_proceeding)); @@ -1350,7 +1350,7 @@ START_TEST(call_2_5_1) respond_with_sdp( update, dialog, SIP_200_OK, TAG_END()); - s2_free_message(update), update = NULL; + s2_sip_free_message(update), update = NULL; fail_unless(s2_check_event(nua_r_update, 200)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); @@ -1358,16 +1358,16 @@ START_TEST(call_2_5_1) prack = respond_with_100rel(invite, dialog, with_sdp = 0, SIP_180_RINGING, TAG_END()); - s2_respond_to(prack, dialog, SIP_200_OK, TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_respond_to(prack, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_callstate(nua_callstate_proceeding)); fail_unless(s2_check_event(nua_r_prack, 200)); - s2_respond_to(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); bye_to_nua(nh, TAG_END()); @@ -1391,7 +1391,7 @@ START_TEST(call_2_5_2) "sends UPDATE, " "receives 200 to UPDATE."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua( nh, @@ -1416,24 +1416,24 @@ START_TEST(call_2_5_2) rack->ra_method_name = invite->sip->sip_cseq->cs_method_name; nua_prack(nh, SIPTAG_RACK(rack), TAG_END()); - prack = s2_wait_for_request(SIP_METHOD_PRACK); + prack = s2_sip_wait_for_request(SIP_METHOD_PRACK); process_offer(prack); - s2_respond_to(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_completing)); respond_with_sdp( prack, dialog, SIP_200_OK, TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_event(nua_r_prack, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - update = s2_wait_for_request(SIP_METHOD_UPDATE); + update = s2_sip_wait_for_request(SIP_METHOD_UPDATE); /* UPDATE sent by stack, stack sends event for it */ fail_unless(s2_check_callstate(nua_callstate_calling)); @@ -1441,7 +1441,7 @@ START_TEST(call_2_5_2) respond_with_sdp( update, dialog, SIP_200_OK, TAG_END()); - s2_free_message(update), update = NULL; + s2_sip_free_message(update), update = NULL; fail_unless(s2_check_event(nua_r_update, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -1467,7 +1467,7 @@ START_TEST(call_2_5_3) "receives 200 to UPDATE, " "sends ACK."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua( nh, @@ -1492,21 +1492,21 @@ START_TEST(call_2_5_3) rack->ra_method_name = invite->sip->sip_cseq->cs_method_name; nua_prack(nh, SIPTAG_RACK(rack), TAG_END()); - prack = s2_wait_for_request(SIP_METHOD_PRACK); + prack = s2_sip_wait_for_request(SIP_METHOD_PRACK); process_offer(prack); respond_with_sdp( prack, dialog, SIP_200_OK, TAG_END()); - s2_free_message(prack), prack = NULL; + s2_sip_free_message(prack), prack = NULL; fail_unless(s2_check_event(nua_r_prack, 200)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); - update = s2_wait_for_request(SIP_METHOD_UPDATE); + update = s2_sip_wait_for_request(SIP_METHOD_UPDATE); /* UPDATE sent by stack, stack sends event for it */ fail_unless(s2_check_callstate(nua_callstate_proceeding)); - s2_respond_to(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_completing)); @@ -1514,11 +1514,11 @@ START_TEST(call_2_5_3) respond_with_sdp( update, dialog, SIP_200_OK, TAG_END()); - s2_free_message(update), update = NULL; + s2_sip_free_message(update), update = NULL; fail_unless(s2_check_event(nua_r_update, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); bye_to_nua(nh, TAG_END()); @@ -1560,15 +1560,15 @@ START_TEST(call_2_6_1) for (i = 0; i < 2; i++) { fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); process_offer(invite); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -1597,40 +1597,40 @@ START_TEST(call_2_6_2) soa_generate_offer(soa, 1, NULL); request_with_sdp(dialog, SIP_METHOD_INVITE, NULL, TAG_END()); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); respond_with_sdp(invite, dialog, SIP_500_INTERNAL_SERVER_ERROR, SIPTAG_RETRY_AFTER_STR("8"), TAG_END()); - s2_free_message(invite); - ack = s2_wait_for_request(SIP_METHOD_ACK); + s2_sip_free_message(invite); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); - response = s2_wait_for_response(491, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(491, SIP_METHOD_INVITE); fail_if(!response); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, SIPTAG_VIA(sip_object(dialog->invite)->sip_via), TAG_END())); - s2_free_message(response); + s2_sip_free_message(response); fail_if(soa_process_reject(soa, NULL) < 0); /* We get nua_r_invite with 100 trying (and 500 in sip->sip_status) */ fail_unless(s2_check_event(nua_r_invite, 100)); - s2_fast_forward(10, s2->root); + s2_nua_fast_forward(10, s2base->root); fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); process_offer(invite); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); bye_by_nua(nh, TAG_END()); @@ -1652,7 +1652,7 @@ START_TEST(call_2_6_3) nh = invite_to_nua( TAG_END()); - s2_request_to(dialog, SIP_METHOD_INVITE, NULL, + s2_sip_request_to(dialog, SIP_METHOD_INVITE, NULL, SIPTAG_USER_AGENT_STR("evil (evil) evil"), TAG_END()); @@ -1660,24 +1660,24 @@ START_TEST(call_2_6_3) fail_unless(s2_check_callstate(nua_callstate_completed)); - response = s2_wait_for_response(200, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(200, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); + s2_sip_update_dialog(dialog, response); fail_if(!response->sip->sip_content_type); - s2_free_message(response); + s2_sip_free_message(response); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); fail_unless(s2_check_event(nua_i_ack, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - s2_fast_forward(10, s2->root); + s2_nua_fast_forward(10, s2base->root); nua_set_hparams(nh, NUTAG_REFRESH_WITHOUT_SDP(1), TAG_END()); fail_unless(s2_check_event(nua_r_set_params, 200)); - s2_request_to(dialog, SIP_METHOD_INVITE, NULL, + s2_sip_request_to(dialog, SIP_METHOD_INVITE, NULL, SIPTAG_USER_AGENT_STR("evil (evil) evil"), TAG_END()); @@ -1685,14 +1685,14 @@ START_TEST(call_2_6_3) fail_unless(s2_check_callstate(nua_callstate_completed)); - response = s2_wait_for_response(200, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(200, SIP_METHOD_INVITE); fail_if(!response); - s2_update_dialog(dialog, response); + s2_sip_update_dialog(dialog, response); fail_if(response->sip->sip_content_type); - s2_free_message(response); + s2_sip_free_message(response); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, TAG_END())); fail_unless(s2_check_event(nua_i_ack, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -1719,17 +1719,17 @@ START_TEST(call_2_6_4) nua_invite(nh, SIPTAG_PAYLOAD_STR(""), TAG_END()); fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); fail_if(invite->sip->sip_content_type); soa_generate_offer(soa, 1, NULL); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); process_answer(ack); - s2_free_message(ack); + s2_sip_free_message(ack); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -1764,7 +1764,7 @@ START_TEST(call_3_1_1) struct message *invite, *ack; s2_case("3.1.1", "Call failure", "Call fails with 403 response"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_invite(nh, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), @@ -1772,17 +1772,17 @@ START_TEST(call_3_1_1) fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); - s2_respond_to(invite, NULL, SIP_403_FORBIDDEN, + s2_sip_respond_to(invite, NULL, SIP_403_FORBIDDEN, SIPTAG_TO_STR("UAS Changed "), TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); fail_if(strcmp(ack->sip->sip_to->a_display, "UAS Changed")); - s2_free_message(ack); + s2_sip_free_message(ack); fail_unless(s2_check_event(nua_r_invite, 403)); fail_unless(s2_check_callstate(nua_callstate_terminated)); @@ -1800,7 +1800,7 @@ START_TEST(call_3_1_2) s2_case("3.1.2", "Call fails after too many retries", "Call fails after 4 times 500 Retry-After"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), NUTAG_RETRY_COUNT(3), TAG_END()); @@ -1809,17 +1809,17 @@ START_TEST(call_3_1_2) for (i = 0;; i++) { fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); - s2_respond_to(invite, NULL, SIP_500_INTERNAL_SERVER_ERROR, + s2_sip_respond_to(invite, NULL, SIP_500_INTERNAL_SERVER_ERROR, SIPTAG_RETRY_AFTER_STR("5"), TAG_END()); - s2_free_message(invite); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + s2_sip_free_message(invite); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); if (i == 3) break; fail_unless(s2_check_event(nua_r_invite, 100)); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); } fail_unless(s2_check_event(nua_r_invite, 500)); @@ -1835,7 +1835,7 @@ START_TEST(call_3_2_1) struct message *invite; s2_case("3.2.1", "Re-INVITE failure", "Re-INVITE fails with 403 response"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, TAG_END()); @@ -1844,12 +1844,12 @@ START_TEST(call_3_2_1) fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); - s2_respond_to(invite, NULL, SIP_403_FORBIDDEN, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, NULL, SIP_403_FORBIDDEN, TAG_END()); + s2_sip_free_message(invite); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); fail_unless(s2_check_event(nua_r_invite, 403)); /* Return to previous state */ fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -1868,7 +1868,7 @@ START_TEST(call_3_2_2) s2_case("3.2.2", "Re-INVITE fails after too many retries", "Call fails after 4 times 500 Retry-After"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), NUTAG_RETRY_COUNT(3), TAG_END()); @@ -1879,26 +1879,26 @@ START_TEST(call_3_2_2) for (i = 0;; i++) { fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); - s2_respond_to(invite, NULL, SIP_500_INTERNAL_SERVER_ERROR, + s2_sip_respond_to(invite, NULL, SIP_500_INTERNAL_SERVER_ERROR, SIPTAG_RETRY_AFTER_STR("5"), TAG_END()); - s2_free_message(invite); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + s2_sip_free_message(invite); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); if (i == 3) break; fail_unless(s2_check_event(nua_r_invite, 100)); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); } fail_unless(s2_check_event(nua_r_invite, 500)); /* Graceful termination */ fail_unless(s2_check_callstate(nua_callstate_terminating)); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); @@ -1913,7 +1913,7 @@ START_TEST(call_3_2_3) struct message *invite; s2_case("3.2.3", "Re-INVITE failure", "Re-INVITE fails with 491 response"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, TAG_END()); @@ -1922,11 +1922,11 @@ START_TEST(call_3_2_3) fail_unless(s2_check_callstate(nua_callstate_calling)); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); - s2_respond_to(invite, NULL, SIP_491_REQUEST_PENDING, TAG_END()); - s2_free_message(invite); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + s2_sip_respond_to(invite, NULL, SIP_491_REQUEST_PENDING, TAG_END()); + s2_sip_free_message(invite); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); fail_unless(s2_check_event(nua_r_invite, 491)); /* Return to previous state */ fail_unless(s2_check_callstate(nua_callstate_ready)); @@ -1971,12 +1971,12 @@ START_TEST(bye_4_1_1) nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, + s2_sip_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, SIPTAG_PROXY_AUTHENTICATE_STR(s2_auth_digest_str), TAG_END()); - s2_free_message(bye); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 407)); soa_generate_offer(soa, 1, NULL); @@ -1984,11 +1984,11 @@ START_TEST(bye_4_1_1) request_with_sdp(dialog, SIP_METHOD_INVITE, NULL, TAG_END()); do { - r481 = s2_wait_for_response(0, SIP_METHOD_INVITE); + r481 = s2_sip_wait_for_response(0, SIP_METHOD_INVITE); } while (r481->sip->sip_status->st_status < 200); - s2_update_dialog(dialog, r481); /* send ACK */ + s2_sip_update_dialog(dialog, r481); /* send ACK */ fail_unless(s2_check_callstate(nua_callstate_terminated)); @@ -2010,22 +2010,22 @@ START_TEST(bye_4_1_2) s2_flush_events(); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); request_with_sdp(dialog, SIP_METHOD_INVITE, NULL, TAG_END()); do { - r481 = s2_wait_for_response(0, SIP_METHOD_INVITE); + r481 = s2_sip_wait_for_response(0, SIP_METHOD_INVITE); } while (r481->sip->sip_status->st_status < 200); - s2_update_dialog(dialog, r481); /* send ACK */ + s2_sip_update_dialog(dialog, r481); /* send ACK */ fail_unless(s2_check_callstate(nua_callstate_terminated)); - s2_respond_to(bye, dialog, SIP_200_OK, + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); nua_handle_destroy(nh); @@ -2051,22 +2051,22 @@ START_TEST(bye_4_1_3) s2_flush_events(); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); i_bye = s2_wait_for_event(nua_i_bye, 100); fail_if(!i_bye); nua_respond(nh, 200, "OKOK", NUTAG_WITH(i_bye->data->e_msg), TAG_END()); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); - fail_unless(s2_check_response(200, SIP_METHOD_BYE)); + fail_unless(s2_sip_check_response(200, SIP_METHOD_BYE)); nua_handle_destroy(nh); } @@ -2089,23 +2089,23 @@ START_TEST(bye_4_1_4) fail_unless(s2_check_event(nua_r_set_params, 200)); s2_flush_events(); - s2_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); i_bye = s2_wait_for_event(nua_i_bye, 100); fail_if(!i_bye); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); nua_respond(nh, 200, "OKOK", NUTAG_WITH(i_bye->data->e_msg), TAG_END()); - fail_unless(s2_check_response(200, SIP_METHOD_BYE)); + fail_unless(s2_sip_check_response(200, SIP_METHOD_BYE)); nua_handle_destroy(nh); } @@ -2128,23 +2128,23 @@ START_TEST(bye_4_1_5) fail_unless(s2_check_event(nua_r_set_params, 200)); s2_flush_events(); - s2_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); i_bye = s2_wait_for_event(nua_i_bye, 100); fail_if(!i_bye); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); nua_handle_destroy(nh); - fail_unless(s2_check_response(500, SIP_METHOD_BYE)); + fail_unless(s2_sip_check_response(500, SIP_METHOD_BYE)); } END_TEST @@ -2165,22 +2165,22 @@ START_TEST(bye_4_1_6) s2_flush_events(); request_with_sdp(dialog, SIP_METHOD_INVITE, NULL, TAG_END()); - fail_unless(s2_check_response(100, SIP_METHOD_INVITE)); + fail_unless(s2_sip_check_response(100, SIP_METHOD_INVITE)); nua_bye(nh, TAG_END()); fail_unless(s2_check_event(nua_i_invite, 100)); fail_unless(s2_check_callstate(nua_callstate_received)); do { - r486 = s2_wait_for_response(0, SIP_METHOD_INVITE); + r486 = s2_sip_wait_for_response(0, SIP_METHOD_INVITE); } while (r486->sip->sip_status->st_status < 200); - s2_update_dialog(dialog, r486); /* send ACK */ + s2_sip_update_dialog(dialog, r486); /* send ACK */ fail_unless(r486->sip->sip_status->st_status == 486); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); nua_handle_destroy(nh); } @@ -2203,21 +2203,21 @@ START_TEST(bye_4_1_7) s2_flush_events(); request_with_sdp(dialog, SIP_METHOD_INVITE, NULL, TAG_END()); - fail_unless(s2_check_response(100, SIP_METHOD_INVITE)); + fail_unless(s2_sip_check_response(100, SIP_METHOD_INVITE)); nua_bye(nh, TAG_END()); fail_unless(s2_check_event(nua_i_invite, 100)); fail_unless(s2_check_callstate(nua_callstate_received)); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); do { - r486 = s2_wait_for_response(0, SIP_METHOD_INVITE); + r486 = s2_sip_wait_for_response(0, SIP_METHOD_INVITE); } while (r486->sip->sip_status->st_status < 200); - s2_update_dialog(dialog, r486); /* send ACK */ + s2_sip_update_dialog(dialog, r486); /* send ACK */ fail_unless(r486->sip->sip_status->st_status == 486); nua_handle_destroy(nh); @@ -2232,14 +2232,14 @@ START_TEST(bye_4_1_8) s2_case("4.1.8", "BYE followed by response to INVITE", "NUA receives INVITE, sends BYE at same time"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, NUTAG_AUTOANSWER(0), TAG_END()); s2_flush_events(); request_with_sdp(dialog, SIP_METHOD_INVITE, NULL, TAG_END()); - fail_unless(s2_check_response(100, SIP_METHOD_INVITE)); + fail_unless(s2_sip_check_response(100, SIP_METHOD_INVITE)); nua_bye(nh, TAG_END()); fail_unless(s2_check_event(nua_i_invite, 100)); fail_unless(s2_check_callstate(nua_callstate_received)); @@ -2247,16 +2247,16 @@ START_TEST(bye_4_1_8) nua_respond(nh, SIP_486_BUSY_HERE, TAG_END()); do { - r486 = s2_wait_for_response(0, SIP_METHOD_INVITE); + r486 = s2_sip_wait_for_response(0, SIP_METHOD_INVITE); } while (r486->sip->sip_status->st_status < 200); - s2_update_dialog(dialog, r486); /* send ACK */ + s2_sip_update_dialog(dialog, r486); /* send ACK */ fail_unless(r486->sip->sip_status->st_status == 486); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); nua_handle_destroy(nh); } @@ -2279,29 +2279,29 @@ START_TEST(bye_4_1_9) s2_flush_events(); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); i_bye = s2_wait_for_event(nua_i_bye, 200); fail_if(!i_bye); s2_free_event(i_bye), i_bye = NULL; fail_unless(s2_check_callstate(nua_callstate_terminated)); - fail_unless(s2_check_response(200, SIP_METHOD_BYE)); + fail_unless(s2_sip_check_response(200, SIP_METHOD_BYE)); nua_handle_destroy(nh); mark_point(); - su_root_step(s2->root, 10); - su_root_step(s2->root, 10); - su_root_step(s2->root, 10); + su_root_step(s2base->root, 10); + su_root_step(s2base->root, 10); + su_root_step(s2base->root, 10); mark_point(); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); mark_point(); while (su_home_check_alloc((su_home_t *)nua, (void *)nh)) { - su_root_step(s2->root, 10); + su_root_step(s2base->root, 10); } } END_TEST @@ -2323,37 +2323,37 @@ START_TEST(bye_4_1_10) s2_flush_events(); nua_invite(nh, TAG_END()); - invite = s2_wait_for_request(SIP_METHOD_INVITE); + invite = s2_sip_wait_for_request(SIP_METHOD_INVITE); fail_if(!invite); - s2_respond_to(invite, dialog, SIP_501_NOT_IMPLEMENTED, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_501_NOT_IMPLEMENTED, TAG_END()); + s2_sip_free_message(invite); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); fail_unless(s2_check_callstate(nua_callstate_calling)); fail_unless(s2_check_event(nua_r_invite, 501)); fail_unless(s2_check_callstate(nua_callstate_terminating)); - s2_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); i_bye = s2_wait_for_event(nua_i_bye, 200); fail_if(!i_bye); s2_free_event(i_bye), i_bye = NULL; fail_unless(s2_check_callstate(nua_callstate_terminated)); - fail_unless(s2_check_response(200, SIP_METHOD_BYE)); + fail_unless(s2_sip_check_response(200, SIP_METHOD_BYE)); nua_handle_destroy(nh); - su_root_step(s2->root, 10); - su_root_step(s2->root, 10); - su_root_step(s2->root, 10); + su_root_step(s2base->root, 10); + su_root_step(s2base->root, 10); + su_root_step(s2base->root, 10); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); while (su_home_check_alloc((su_home_t *)nua, (void *)nh)) { - su_root_step(s2->root, 10); + su_root_step(s2base->root, 10); } } END_TEST @@ -2367,29 +2367,29 @@ START_TEST(bye_4_1_11) s2_case("4.1.11", "Receive BYE in completing state", "NUA sends INVITE, receives 200, receives BYE."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, NUTAG_AUTOACK(0), TAG_END()); process_offer(invite); - s2_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_completing)); - s2_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_BYE, NULL, TAG_END()); i_bye = s2_wait_for_event(nua_i_bye, 200); fail_if(!i_bye); s2_free_event(i_bye), i_bye = NULL; fail_unless(s2_check_callstate(nua_callstate_terminated)); - fail_unless(s2_check_response(200, SIP_METHOD_BYE)); + fail_unless(s2_sip_check_response(200, SIP_METHOD_BYE)); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); nua_handle_destroy(nh); } @@ -2411,26 +2411,26 @@ START_TEST(bye_4_2_1) SIPTAG_REQUIRE_STR("timer"), TAG_END()); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); invite_timer_round(nh, "300", NULL); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, + s2_sip_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, SIPTAG_PROXY_AUTHENTICATE_STR(s2_auth_digest_str), TAG_END()); - s2_free_message(bye); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 407)); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); nua_authenticate(nh, NUTAG_AUTH("Digest:\"s2test\":abc:abc"), TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); fail_if(s2->events); @@ -2455,28 +2455,28 @@ START_TEST(bye_4_2_2) SIPTAG_REQUIRE_STR("timer"), TAG_END()); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); invite_timer_round(nh, "300", NULL); - s2_fast_forward(140, s2->root); + s2_nua_fast_forward(140, s2base->root); nua_bye(nh, TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, + s2_sip_respond_to(bye, dialog, SIP_407_PROXY_AUTH_REQUIRED, SIPTAG_PROXY_AUTHENTICATE_STR(s2_auth_digest_str), TAG_END()); - s2_free_message(bye); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 407)); - s2_fast_forward(160, s2->root); + s2_nua_fast_forward(160, s2base->root); nua_authenticate(nh, NUTAG_AUTH(s2_auth_credentials), TAG_END()); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); fail_unless(s2_check_event(nua_r_bye, 200)); fail_unless(s2_check_callstate(nua_callstate_terminated)); fail_if(s2->events); @@ -2518,22 +2518,22 @@ START_TEST(destroy_4_3_1) s2_case("4.3.1", "Destroy handle after INVITE sent", "NUA sends INVITE, handle gets destroyed."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, TAG_END()); process_offer(invite); nua_handle_destroy(nh); - s2_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); - s2_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); + s2_sip_free_message(invite); - s2_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(cancel); } END_TEST @@ -2546,23 +2546,23 @@ START_TEST(destroy_4_3_2) s2_case("4.3.2", "Destroy handle in calling state", "NUA sends INVITE, receives 180, handle gets destroyed."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, TAG_END()); process_offer(invite); - s2_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); nua_handle_destroy(nh); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); - s2_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); + s2_sip_free_message(invite); - s2_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(cancel); } END_TEST @@ -2574,11 +2574,11 @@ START_TEST(destroy_4_3_3) s2_case("4.3.3", "Destroy handle in completing state", "NUA sends INVITE, receives 200, handle gets destroyed."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, NUTAG_AUTOACK(0), TAG_END()); process_offer(invite); - s2_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); @@ -2588,16 +2588,16 @@ START_TEST(destroy_4_3_3) nua_handle_destroy(nh); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); - s2_free_message(invite); + s2_sip_free_message(invite); } END_TEST @@ -2610,11 +2610,11 @@ START_TEST(destroy_4_3_4) s2_case("4.3.3", "Destroy handle in ready state ", "NUA sends INVITE, receives 200, handle gets destroyed."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, NUTAG_AUTOACK(0), TAG_END()); process_offer(invite); - s2_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); @@ -2623,20 +2623,20 @@ START_TEST(destroy_4_3_4) fail_unless(s2_check_callstate(nua_callstate_completing)); nua_ack(nh, TAG_END()); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); fail_unless(s2_check_callstate(nua_callstate_ready)); nua_handle_destroy(nh); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); - s2_free_message(invite); + s2_sip_free_message(invite); } END_TEST @@ -2656,15 +2656,15 @@ START_TEST(destroy_4_3_5) nua_handle_destroy(nh); - s2_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_100_TRYING, TAG_END()); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); - s2_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); + s2_sip_free_message(invite); - s2_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(cancel); } END_TEST @@ -2681,19 +2681,19 @@ START_TEST(destroy_4_3_6) invite = invite_sent_by_nua(nh, TAG_END()); process_offer(invite); - s2_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); nua_handle_destroy(nh); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); - s2_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); - s2_free_message(invite); + s2_sip_respond_to(invite, dialog, SIP_487_REQUEST_CANCELLED, TAG_END()); + s2_sip_free_message(invite); - s2_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(cancel); } END_TEST @@ -2710,7 +2710,7 @@ START_TEST(destroy_4_3_7) invite = invite_sent_by_nua(nh, NUTAG_AUTOACK(0), TAG_END()); process_offer(invite); - s2_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); @@ -2720,16 +2720,16 @@ START_TEST(destroy_4_3_7) nua_handle_destroy(nh); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); - s2_free_message(invite); + s2_sip_free_message(invite); } END_TEST @@ -2739,15 +2739,12 @@ START_TEST(destroy_4_3_8) nua_handle_t *nh; struct message *invite, *ack, *bye; - tport_set_params(s2->master, TPTAG_LOG(1), TAG_END()); - s2_setup_logs(7); - s2_case("4.3.8", "Destroy handle after INVITE sent", "NUA sends INVITE, handle gets destroyed, " "but remote end returns 200 OK. " "Make sure nua tries to release call properly."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, TAG_END()); process_offer(invite); @@ -2755,16 +2752,16 @@ START_TEST(destroy_4_3_8) nua_handle_destroy(nh); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); } END_TEST @@ -2774,40 +2771,37 @@ START_TEST(destroy_4_3_9) nua_handle_t *nh; struct message *invite, *cancel, *ack, *bye; - tport_set_params(s2->master, TPTAG_LOG(1), TAG_END()); - s2_setup_logs(7); - s2_case("4.3.9", "Destroy handle in calling state", "NUA sends INVITE, receives 180, handle gets destroyed, " "but remote end returns 200 OK. " "Make sure nua tries to release call properly."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite = invite_sent_by_nua(nh, TAG_END()); process_offer(invite); - s2_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); + s2_sip_respond_to(invite, dialog, SIP_180_RINGING, TAG_END()); fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); nua_handle_destroy(nh); - cancel = s2_wait_for_request(SIP_METHOD_CANCEL); + cancel = s2_sip_wait_for_request(SIP_METHOD_CANCEL); fail_if(!cancel); - s2_respond_to(cancel, dialog, SIP_481_NO_TRANSACTION, TAG_END()); - s2_free_message(cancel); + s2_sip_respond_to(cancel, dialog, SIP_481_NO_TRANSACTION, TAG_END()); + s2_sip_free_message(cancel); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); - ack = s2_wait_for_request(SIP_METHOD_ACK); + ack = s2_sip_wait_for_request(SIP_METHOD_ACK); fail_if(!ack); - s2_free_message(ack); + s2_sip_free_message(ack); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); } END_TEST @@ -2831,18 +2825,18 @@ START_TEST(destroy_4_4_1) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_handle_destroy(nh); - response = s2_wait_for_response(480, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(480, SIP_METHOD_INVITE); fail_if(!response); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, SIPTAG_VIA(sip_object(dialog->invite)->sip_via), TAG_END())); - s2_free_message(response); + s2_sip_free_message(response); } END_TEST @@ -2866,24 +2860,24 @@ START_TEST(destroy_4_4_2) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_respond(nh, SIP_180_RINGING, TAG_END()); - response = s2_wait_for_response(180, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(180, SIP_METHOD_INVITE); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_handle_destroy(nh); - response = s2_wait_for_response(480, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(480, SIP_METHOD_INVITE); fail_if(!response); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, SIPTAG_VIA(sip_object(dialog->invite)->sip_via), TAG_END())); - s2_free_message(response); + s2_sip_free_message(response); } END_TEST @@ -2907,37 +2901,37 @@ START_TEST(destroy_4_4_3_1) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_respond(nh, SIP_180_RINGING, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), TAG_END()); - response = s2_wait_for_response(180, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(180, SIP_METHOD_INVITE); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); fail_unless(s2_check_callstate(nua_callstate_early)); nua_respond(nh, SIP_200_OK, TAG_END()); fail_unless(s2_check_callstate(nua_callstate_completed)); - response = s2_wait_for_response(200, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(200, SIP_METHOD_INVITE); fail_if(!response); nua_handle_destroy(nh); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, SIPTAG_VIA(sip_object(dialog->invite)->sip_via), TAG_END())); - s2_free_message(response); + s2_sip_free_message(response); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); } END_TEST @@ -2961,37 +2955,37 @@ START_TEST(destroy_4_4_3_2) s2_free_event(invite); - response = s2_wait_for_response(100, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(100, SIP_METHOD_INVITE); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_respond(nh, SIP_180_RINGING, SOATAG_USER_SDP_STR("m=audio 5004 RTP/AVP 0 8"), TAG_END()); - response = s2_wait_for_response(180, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(180, SIP_METHOD_INVITE); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); fail_unless(s2_check_callstate(nua_callstate_early)); nua_respond(nh, SIP_200_OK, TAG_END()); fail_unless(s2_check_callstate(nua_callstate_completed)); - response = s2_wait_for_response(200, SIP_METHOD_INVITE); + response = s2_sip_wait_for_response(200, SIP_METHOD_INVITE); fail_if(!response); nua_handle_destroy(nh); - bye = s2_wait_for_request(SIP_METHOD_BYE); + bye = s2_sip_wait_for_request(SIP_METHOD_BYE); fail_if(!bye); - s2_respond_to(bye, dialog, SIP_200_OK, TAG_END()); - s2_free_message(bye); + s2_sip_respond_to(bye, dialog, SIP_200_OK, TAG_END()); + s2_sip_free_message(bye); - fail_if(s2_request_to(dialog, SIP_METHOD_ACK, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_ACK, NULL, SIPTAG_VIA(sip_object(dialog->invite)->sip_via), TAG_END())); - s2_free_message(response); + s2_sip_free_message(response); } END_TEST @@ -3037,23 +3031,23 @@ START_TEST(options_5_1_1) s2_case("5.1.1", "Test nua_respond() API", "Test nua_respond() API with OPTIONS."); - s2_request_to(dialog, SIP_METHOD_OPTIONS, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_OPTIONS, NULL, TAG_END()); options = s2_wait_for_event(nua_i_options, 200); fail_unless(options != NULL); nh = options->nh; fail_if(!nh); - response = s2_wait_for_response(200, SIP_METHOD_OPTIONS); + response = s2_sip_wait_for_response(200, SIP_METHOD_OPTIONS); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_handle_destroy(nh); nua_set_params(nua, NUTAG_APPL_METHOD("OPTIONS"), TAG_END()); fail_unless(s2_check_event(nua_r_set_params, 200)); - s2_request_to(dialog, SIP_METHOD_OPTIONS, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_OPTIONS, NULL, TAG_END()); options = s2_wait_for_event(nua_i_options, 100); fail_unless(options != NULL); @@ -3061,9 +3055,9 @@ START_TEST(options_5_1_1) nua_respond(nh, 202, "okok", NUTAG_WITH_SAVED(options->event), TAG_END()); - response = s2_wait_for_response(202, SIP_METHOD_OPTIONS); + response = s2_sip_wait_for_response(202, SIP_METHOD_OPTIONS); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_handle_destroy(nh); } @@ -3099,7 +3093,7 @@ START_TEST(options_5_1_2) nua_set_params(nua, NUTAG_APPL_METHOD("OPTIONS"), TAG_END()); fail_unless(s2_check_event(nua_r_set_params, 200)); - s2_request_to(dialog, SIP_METHOD_OPTIONS, NULL, TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_OPTIONS, NULL, TAG_END()); options = s2_wait_for_event(nua_i_options, 100); fail_unless(options != NULL); @@ -3109,9 +3103,9 @@ START_TEST(options_5_1_2) pthread_join(tid, &thread_return); fail_unless(thread_return == (void *)options); - response = s2_wait_for_response(202, SIP_METHOD_OPTIONS); + response = s2_sip_wait_for_response(202, SIP_METHOD_OPTIONS); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_handle_destroy(nh); } @@ -3160,13 +3154,13 @@ START_TEST(refer_5_2_1) s2_case("5.2.1", "Receive REFER", "Make a call, receive REFER."); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, TAG_END()); - *sip_refer_to_init(r)->r_url = *s2->local->a_url; + *sip_refer_to_init(r)->r_url = *s2sip->aor->a_url; r->r_url->url_user = "bob2"; - s2_request_to(dialog, SIP_METHOD_REFER, NULL, + s2_sip_request_to(dialog, SIP_METHOD_REFER, NULL, SIPTAG_REFER_TO(r), TAG_END()); refer = s2_wait_for_event(nua_i_refer, 202); @@ -3175,8 +3169,8 @@ START_TEST(refer_5_2_1) nua_handle_destroy(nh); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); - s2_respond_to(notify, dialog, SIP_200_OK, TAG_END()); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); + s2_sip_respond_to(notify, dialog, SIP_200_OK, TAG_END()); } END_TEST @@ -3200,16 +3194,13 @@ START_TEST(refer_5_2_2) dialog2 = su_home_new(sizeof *dialog2); fail_unless(dialog2 != NULL); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); invite_by_nua(nh, TAG_END()); - *sip_refer_to_init(r)->r_url = *s2->local->a_url; + *sip_refer_to_init(r)->r_url = *s2sip->aor->a_url; r->r_url->url_user = "bob2"; - tport_set_params(s2->master, TPTAG_LOG(1), TAG_END()); - s2_setup_logs(7); - - s2_request_to(dialog, SIP_METHOD_REFER, NULL, + s2_sip_request_to(dialog, SIP_METHOD_REFER, NULL, SIPTAG_REFER_TO(r), TAG_END()); refer = s2_wait_for_event(nua_i_refer, 202); @@ -3233,10 +3224,10 @@ START_TEST(refer_5_2_2) SIPTAG_PAYLOAD_STR("SIP/2.0 100 Trying\r\n"), NUTAG_SUBSTATE(nua_substate_active), TAG_END()); - notify0 = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify0 = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless((ss = notify0->sip->sip_subscription_state) != NULL); fail_unless(su_casematch("active", ss->ss_substate)); - s2_respond_to(notify0, dialog1, SIP_200_OK, TAG_END()); + s2_sip_respond_to(notify0, dialog1, SIP_200_OK, TAG_END()); notified = s2_wait_for_event(nua_r_notify, 200); nh2 = nua_handle(nua, NULL, NUTAG_URL(r->r_url), TAG_END()); @@ -3255,17 +3246,17 @@ START_TEST(refer_5_2_2) fail_unless(s2_check_event(nua_r_invite, 180)); fail_unless(s2_check_callstate(nua_callstate_proceeding)); - notify1 = s2_wait_for_request(SIP_METHOD_NOTIFY); - s2_respond_to(notify1, dialog1, SIP_200_OK, TAG_END()); + notify1 = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); + s2_sip_respond_to(notify1, dialog1, SIP_200_OK, TAG_END()); respond_with_sdp(invite, dialog, SIP_200_OK, TAG_END()); - s2_free_message(invite); + s2_sip_free_message(invite); fail_unless(s2_check_event(nua_r_invite, 200)); fail_unless(s2_check_callstate(nua_callstate_ready)); - fail_unless(s2_check_request(SIP_METHOD_ACK)); + fail_unless(s2_sip_check_request(SIP_METHOD_ACK)); - notify2 = s2_wait_for_request(SIP_METHOD_NOTIFY); - s2_respond_to(notify2, dialog1, SIP_200_OK, TAG_END()); + notify2 = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); + s2_sip_respond_to(notify2, dialog1, SIP_200_OK, TAG_END()); fail_unless((ss = notify2->sip->sip_subscription_state) != NULL); fail_unless(su_casematch("terminated", ss->ss_substate)); @@ -3296,10 +3287,10 @@ START_TEST(empty) s2_case("0.0.0", "Empty test case", "Detailed explanation for empty test case."); - tport_set_params(s2->master, TPTAG_LOG(1), TAG_END()); + tport_set_params(s2sip->master, TPTAG_LOG(1), TAG_END()); s2_setup_logs(7); s2_setup_logs(0); - tport_set_params(s2->master, TPTAG_LOG(0), TAG_END()); + tport_set_params(s2sip->master, TPTAG_LOG(0), TAG_END()); } END_TEST diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/check_simple.c b/libs/sofia-sip/libsofia-sip-ua/nua/check_simple.c index d122a3bff1..6e69158edf 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/check_simple.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/check_simple.c @@ -56,7 +56,6 @@ /* ====================================================================== */ static nua_t *nua; -static soa_session_t *soa = NULL; static struct dialog *dialog = NULL; #define CRLF "\r\n" @@ -138,7 +137,7 @@ respond_to_subscribe(struct message *subscribe, ta_list ta; ta_start(ta, tag, value); - s2_respond_to(subscribe, dialog, status, phrase, + s2_sip_respond_to(subscribe, dialog, status, phrase, ta_tags(ta)); ta_end(ta); @@ -156,15 +155,15 @@ notify_to_nua(enum nua_substate expect_substate, ta_list ta; ta_start(ta, tag, value); - fail_if(s2_request_to(dialog, SIP_METHOD_NOTIFY, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_NOTIFY, NULL, SIPTAG_CONTENT_TYPE_STR(event_mime_type), SIPTAG_PAYLOAD_STR(event_state), ta_tags(ta))); ta_end(ta); - response = s2_wait_for_response(200, SIP_METHOD_NOTIFY); + response = s2_sip_wait_for_response(200, SIP_METHOD_NOTIFY); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); event = s2_wait_for_event(nua_i_notify, 200); fail_if(!event); fail_unless(s2_check_substate(event, expect_substate)); @@ -186,7 +185,7 @@ subscription_by_nua(nua_handle_t *nh, char const *substate_str = subscription_state; char const *expires = "600"; - subscribe = s2_wait_for_request(SIP_METHOD_SUBSCRIBE); + subscribe = s2_sip_wait_for_request(SIP_METHOD_SUBSCRIBE); if (event_type) fail_if(!subscribe->sip->sip_event || strcmp(event_type, subscribe->sip->sip_event->o_type)); @@ -200,7 +199,7 @@ subscription_by_nua(nua_handle_t *nh, ta_start(ta, tag, value); if (send_notify_before_response) { - s2_save_uas_dialog(dialog, subscribe->sip); + s2_sip_save_uas_dialog(dialog, subscribe->sip); notify = notify_to_nua(substate, SIPTAG_EVENT(subscribe->sip->sip_event), SIPTAG_SUBSCRIPTION_STATE_STR(substate_str), @@ -223,7 +222,7 @@ subscription_by_nua(nua_handle_t *nh, ta_tags(ta)); } - s2_free_message(subscribe); + s2_sip_free_message(subscribe); return notify; } @@ -235,15 +234,15 @@ unsubscribe_by_nua(nua_handle_t *nh, tag_type_t tag, tag_value_t value, ...) struct event *event; nua_unsubscribe(nh, TAG_END()); - subscribe = s2_wait_for_request(SIP_METHOD_SUBSCRIBE); + subscribe = s2_sip_wait_for_request(SIP_METHOD_SUBSCRIBE); - s2_respond_to(subscribe, dialog, SIP_200_OK, SIPTAG_EXPIRES_STR("0"), TAG_END()); + s2_sip_respond_to(subscribe, dialog, SIP_200_OK, SIPTAG_EXPIRES_STR("0"), TAG_END()); event = s2_wait_for_event(nua_r_unsubscribe, 200); fail_if(!event); fail_unless(s2_check_substate(event, nua_substate_active)); s2_free_event(event); - fail_if(s2_request_to(dialog, SIP_METHOD_NOTIFY, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_NOTIFY, NULL, SIPTAG_EVENT(subscribe->sip->sip_event), SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=tiemout"), SIPTAG_CONTENT_TYPE_STR(event_mime_type), @@ -254,9 +253,9 @@ unsubscribe_by_nua(nua_handle_t *nh, tag_type_t tag, tag_value_t value, ...) fail_unless(s2_check_substate(event, nua_substate_terminated)); s2_free_event(event); - response = s2_wait_for_response(200, SIP_METHOD_NOTIFY); + response = s2_sip_wait_for_response(200, SIP_METHOD_NOTIFY); fail_if(!response); - s2_free_message(response); s2_free_message(subscribe); + s2_sip_free_message(response); s2_sip_free_message(subscribe); } /* ====================================================================== */ @@ -269,7 +268,7 @@ START_TEST(subscribe_6_1_1) s2_case("6.1.1", "Basic subscription", "NUA sends SUBSCRIBE, waits for NOTIFY, sends un-SUBSCRIBE"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_subscribe(nh, SIPTAG_EVENT_STR(event_type), TAG_END()); notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END()); s2_free_event(notify); @@ -291,15 +290,15 @@ START_TEST(subscribe_6_1_2) send_notify_before_response = 1; - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_subscribe(nh, SIPTAG_EVENT_STR(event_type), TAG_END()); notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END()); s2_free_event(notify); /* Wait for refresh */ - s2_fast_forward(600, s2->root); - subscribe = s2_wait_for_request(SIP_METHOD_SUBSCRIBE); - s2_respond_to(subscribe, dialog, SIP_200_OK, + s2_nua_fast_forward(600, s2base->root); + subscribe = s2_sip_wait_for_request(SIP_METHOD_SUBSCRIBE); + s2_sip_respond_to(subscribe, dialog, SIP_200_OK, SIPTAG_EXPIRES_STR("600"), TAG_END()); @@ -307,7 +306,7 @@ START_TEST(subscribe_6_1_2) fail_unless(s2_check_substate(event, nua_substate_active)); s2_free_event(event); - fail_if(s2_request_to(dialog, SIP_METHOD_NOTIFY, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_NOTIFY, NULL, SIPTAG_EVENT(subscribe->sip->sip_event), SIPTAG_SUBSCRIPTION_STATE_STR("active;expires=600"), SIPTAG_CONTENT_TYPE_STR(event_mime_type), @@ -316,9 +315,9 @@ START_TEST(subscribe_6_1_2) event = s2_wait_for_event(nua_i_notify, 200); fail_if(!event); fail_unless(s2_check_substate(event, nua_substate_active)); s2_free_event(event); - response = s2_wait_for_response(200, SIP_METHOD_NOTIFY); + response = s2_sip_wait_for_response(200, SIP_METHOD_NOTIFY); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); unsubscribe_by_nua(nh, TAG_END()); @@ -336,21 +335,21 @@ START_TEST(subscribe_6_1_3) "NUA sends SUBSCRIBE, waits for NOTIFY, " "gets NOTIFY terminating the subscription,"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_subscribe(nh, SIPTAG_EVENT_STR(event_type), TAG_END()); notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END()); s2_free_event(notify); - fail_if(s2_request_to(dialog, SIP_METHOD_NOTIFY, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_NOTIFY, NULL, SIPTAG_EVENT_STR(event_type), SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=noresource"), TAG_END())); event = s2_wait_for_event(nua_i_notify, 200); fail_if(!event); fail_unless(s2_check_substate(event, nua_substate_terminated)); s2_free_event(event); - response = s2_wait_for_response(200, SIP_METHOD_NOTIFY); + response = s2_sip_wait_for_response(200, SIP_METHOD_NOTIFY); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); nua_handle_destroy(nh); } @@ -366,25 +365,25 @@ START_TEST(subscribe_6_1_4) "NUA sends SUBSCRIBE, waits for NOTIFY, " "gets NOTIFY terminating the subscription,"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_subscribe(nh, SIPTAG_EVENT_STR(event_type), TAG_END()); notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END()); s2_free_event(notify); - fail_if(s2_request_to(dialog, SIP_METHOD_NOTIFY, NULL, + fail_if(s2_sip_request_to(dialog, SIP_METHOD_NOTIFY, NULL, SIPTAG_EVENT_STR(event_type), SIPTAG_SUBSCRIPTION_STATE_STR("terminated;reason=deactivated"), TAG_END())); event = s2_wait_for_event(nua_i_notify, 200); fail_if(!event); fail_unless(s2_check_substate(event, nua_substate_embryonic)); s2_free_event(event); - response = s2_wait_for_response(200, SIP_METHOD_NOTIFY); + response = s2_sip_wait_for_response(200, SIP_METHOD_NOTIFY); fail_if(!response); - s2_free_message(response); + s2_sip_free_message(response); su_home_unref((void *)dialog), dialog = su_home_new(sizeof *dialog); fail_if(!dialog); - s2_fast_forward(5, s2->root); + s2_nua_fast_forward(5, s2base->root); /* nua re-establishes the subscription */ notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END()); s2_free_event(notify); @@ -423,7 +422,7 @@ START_TEST(fetch_6_2_1) s2_case("6.2.1", "Event fetch - NOTIFY after 202", "NUA sends SUBSCRIBE with Expires 0, waits for NOTIFY"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_subscribe(nh, SIPTAG_EVENT_STR(event_type), SIPTAG_EXPIRES_STR("0"), TAG_END()); notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END()); s2_check_substate(notify, nua_substate_terminated); @@ -442,7 +441,7 @@ START_TEST(fetch_6_2_2) send_notify_before_response = 1; - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_subscribe(nh, SIPTAG_EVENT_STR(event_type), SIPTAG_EXPIRES_STR("0"), TAG_END()); notify = subscription_by_nua(nh, nua_substate_embryonic, TAG_END()); s2_check_substate(notify, nua_substate_terminated); @@ -460,18 +459,18 @@ START_TEST(fetch_6_2_3) s2_case("6.2.3", "Event fetch - no NOTIFY", "NUA sends SUBSCRIBE with Expires 0, waits for NOTIFY, times out"); - nh = nua_handle(nua, NULL, SIPTAG_TO(s2->local), TAG_END()); + nh = nua_handle(nua, NULL, SIPTAG_TO(s2sip->aor), TAG_END()); nua_subscribe(nh, SIPTAG_EVENT_STR(event_type), SIPTAG_EXPIRES_STR("0"), TAG_END()); - subscribe = s2_wait_for_request(SIP_METHOD_SUBSCRIBE); - s2_respond_to(subscribe, dialog, SIP_202_ACCEPTED, + subscribe = s2_sip_wait_for_request(SIP_METHOD_SUBSCRIBE); + s2_sip_respond_to(subscribe, dialog, SIP_202_ACCEPTED, SIPTAG_EXPIRES_STR("0"), TAG_END()); - s2_free_message(subscribe); + s2_sip_free_message(subscribe); event = s2_wait_for_event(nua_r_subscribe, 202); fail_if(!event); fail_unless(s2_check_substate(event, nua_substate_embryonic)); s2_free_event(event); - s2_fast_forward(600, s2->root); + s2_nua_fast_forward(600, s2base->root); event = s2_wait_for_event(nua_i_notify, 408); fail_if(!event); fail_unless(s2_check_substate(event, nua_substate_terminated)); @@ -513,7 +512,7 @@ subscribe_to_nua(char const *event, s2_check_event(nua_r_set_params, 200); ta_start(ta, tag, value); - s2_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, + s2_sip_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, SIPTAG_EVENT_STR(event), ta_tags(ta)); ta_end(ta); @@ -525,10 +524,10 @@ subscribe_to_nua(char const *event, TAG_END()); s2_free_event(subscribe); - response = s2_wait_for_response(202, SIP_METHOD_SUBSCRIBE); - s2_update_dialog(dialog, response); + response = s2_sip_wait_for_response(202, SIP_METHOD_SUBSCRIBE); + s2_sip_update_dialog(dialog, response); fail_unless(response->sip->sip_expires != NULL); - s2_free_message(response); + s2_sip_free_message(response); return nh; } @@ -544,24 +543,24 @@ START_TEST(notify_6_3_1) "NUA receives SUBSCRIBE, sends 202 and NOTIFY. " "First NOTIFY terminates subscription. "); - s2_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, - SIPTAG_EVENT_STR("presence"), - TAG_END()); + s2_sip_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, + SIPTAG_EVENT_STR("presence"), + TAG_END()); /* 489 Bad Event by default */ - s2_check_response(489, SIP_METHOD_SUBSCRIBE); + s2_sip_check_response(489, SIP_METHOD_SUBSCRIBE); nua_set_params(nua, NUTAG_APPL_METHOD("SUBSCRIBE"), TAG_END()); s2_check_event(nua_r_set_params, 200); - s2_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, + s2_sip_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, SIPTAG_EVENT_STR("presence"), TAG_END()); - s2_check_response(489, SIP_METHOD_SUBSCRIBE); + s2_sip_check_response(489, SIP_METHOD_SUBSCRIBE); nua_set_params(nua, SIPTAG_ALLOW_EVENTS_STR("presence"), TAG_END()); s2_check_event(nua_r_set_params, 200); - s2_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, + s2_sip_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, SIPTAG_EVENT_STR("presence"), TAG_END()); subscribe = s2_wait_for_event(nua_i_subscribe, 100); @@ -571,11 +570,11 @@ START_TEST(notify_6_3_1) TAG_END()); s2_free_event(subscribe); - s2_check_response(403, SIP_METHOD_SUBSCRIBE); + s2_sip_check_response(403, SIP_METHOD_SUBSCRIBE); nua_handle_destroy(nh); - s2_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, + s2_sip_request_to(dialog, SIP_METHOD_SUBSCRIBE, NULL, SIPTAG_EVENT_STR("presence"), TAG_END()); subscribe = s2_wait_for_event(nua_i_subscribe, 100); @@ -585,22 +584,22 @@ START_TEST(notify_6_3_1) TAG_END()); s2_free_event(subscribe); - response = s2_wait_for_response(202, SIP_METHOD_SUBSCRIBE); - s2_update_dialog(dialog, response); + response = s2_sip_wait_for_response(202, SIP_METHOD_SUBSCRIBE); + s2_sip_update_dialog(dialog, response); fail_unless(response->sip->sip_expires != NULL); - s2_free_message(response); + s2_sip_free_message(response); nua_notify(nh, NUTAG_SUBSTATE(nua_substate_terminated), SIPTAG_PAYLOAD_STR(presence_closed), TAG_END()); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless(notify != NULL); sip = notify->sip; fail_unless(sip->sip_subscription_state != NULL); fail_unless(su_strmatch(sip->sip_subscription_state->ss_substate, "terminated")); - s2_respond_to(notify, dialog, SIP_200_OK, TAG_END()); + s2_sip_respond_to(notify, dialog, SIP_200_OK, TAG_END()); s2_check_event(nua_r_notify, 200); nua_handle_destroy(nh); @@ -610,8 +609,7 @@ END_TEST START_TEST(notify_6_3_2) { nua_handle_t *nh; - struct event *subscribe; - struct message *notify, *response; + struct message *notify; sip_t *sip; s2_case("6.3.2", "NOTIFY server - automatic subscription termination", @@ -624,24 +622,24 @@ START_TEST(notify_6_3_2) NUTAG_SUBSTATE(nua_substate_active), SIPTAG_PAYLOAD_STR(presence_closed), TAG_END()); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless(notify != NULL); sip = notify->sip; fail_unless(sip->sip_subscription_state != NULL); fail_unless(su_strmatch(sip->sip_subscription_state->ss_substate, "active")); - s2_respond_to(notify, dialog, SIP_200_OK, TAG_END()); + s2_sip_respond_to(notify, dialog, SIP_200_OK, TAG_END()); s2_check_event(nua_r_notify, 200); - s2_fast_forward(300, s2->root); + s2_nua_fast_forward(300, s2base->root); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless(notify != NULL); sip = notify->sip; fail_unless(sip->sip_subscription_state != NULL); fail_unless(su_strmatch(sip->sip_subscription_state->ss_substate, "terminated")); - s2_respond_to(notify, dialog, SIP_200_OK, TAG_END()); + s2_sip_respond_to(notify, dialog, SIP_200_OK, TAG_END()); s2_check_event(nua_r_notify, 200); nua_handle_destroy(nh); @@ -677,26 +675,26 @@ START_TEST(notify_6_3_3) NUTAG_SUBSTATE(nua_substate_active), SIPTAG_PAYLOAD_STR(presence_closed), TAG_END()); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless(notify != NULL); sip = notify->sip; fail_unless(sip->sip_subscription_state != NULL); fail_unless(su_strmatch(sip->sip_subscription_state->ss_substate, "active")); - s2_respond_to(notify, dialog, SIP_200_OK, TAG_END()); + s2_sip_respond_to(notify, dialog, SIP_200_OK, TAG_END()); s2_check_event(nua_r_notify, 200); nua_notify(nh, NUTAG_SUBSTATE(nua_substate_active), SIPTAG_PAYLOAD_STR(presence_closed), TAG_END()); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless(notify != NULL); sip = notify->sip; fail_unless(sip->sip_subscription_state != NULL); fail_unless(su_strmatch(sip->sip_subscription_state->ss_substate, "active")); - s2_respond_to(notify, dialog, SIP_481_NO_TRANSACTION, TAG_END()); + s2_sip_respond_to(notify, dialog, SIP_481_NO_TRANSACTION, TAG_END()); response = s2_wait_for_event(nua_r_notify, 481); fail_unless(s2_event_substate(response) == nua_substate_terminated); @@ -723,13 +721,13 @@ START_TEST(notify_6_3_4) NUTAG_SUBSTATE(nua_substate_active), SIPTAG_PAYLOAD_STR(presence_closed), TAG_END()); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless(notify != NULL); sip = notify->sip; fail_unless(sip->sip_subscription_state != NULL); fail_unless(su_strmatch(sip->sip_subscription_state->ss_substate, "active")); - s2_respond_to(notify, dialog, SIP_200_OK, TAG_END()); + s2_sip_respond_to(notify, dialog, SIP_200_OK, TAG_END()); s2_check_event(nua_r_notify, 200); nua_notify(nh, @@ -740,13 +738,13 @@ START_TEST(notify_6_3_4) NUTAG_SUBSTATE(nua_substate_active), SIPTAG_PAYLOAD_STR(presence_closed), TAG_END()); - notify = s2_wait_for_request(SIP_METHOD_NOTIFY); + notify = s2_sip_wait_for_request(SIP_METHOD_NOTIFY); fail_unless(notify != NULL); sip = notify->sip; fail_unless(sip->sip_subscription_state != NULL); fail_unless(su_strmatch(sip->sip_subscription_state->ss_substate, "active")); - s2_respond_to(notify, dialog, SIP_481_NO_TRANSACTION, TAG_END()); + s2_sip_respond_to(notify, dialog, SIP_481_NO_TRANSACTION, TAG_END()); response = s2_wait_for_event(nua_r_notify, 481); fail_unless(s2_event_substate(response) == nua_substate_terminated); response = s2_wait_for_event(nua_r_notify, 481); @@ -783,10 +781,10 @@ START_TEST(empty) s2_case("0.0.0", "Empty test case", "Detailed explanation for empty test case."); - tport_set_params(s2->master, TPTAG_LOG(1), TAG_END()); + tport_set_params(s2sip->master, TPTAG_LOG(1), TAG_END()); s2_setup_logs(7); s2_setup_logs(0); - tport_set_params(s2->master, TPTAG_LOG(0), TAG_END()); + tport_set_params(s2sip->master, TPTAG_LOG(0), TAG_END()); } END_TEST diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.c b/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.c index 0cd616f892..c4e560a15e 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.c +++ b/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.c @@ -54,33 +54,11 @@ #include #include -char const *s2_tester = "s2_tester"; -int s2_start_stop; +/* -- Globals -------------------------------------------------------------- */ -/* -- Module types ------------------------------------------------------ */ +struct s2nua *s2; -struct tp_magic_s -{ - sip_via_t *via; - sip_contact_t *contact; -}; - -/* -- Module prototypes ------------------------------------------------- */ - -static msg_t *s2_msg(int flags); -static int s2_complete_response(msg_t *response, - int status, char const *phrase, - msg_t *request); -static char *s2_generate_tag(su_home_t *home); - -/* -- Module globals ---------------------------------------------------- */ - -struct tester *s2; - -static char const *_s2case = "0.0"; -static unsigned s2_tag_generator = 0; - -/* -- Globals ----------------------------------------------------------- */ +int s2_nua_thread = 0; unsigned s2_default_registration_duration = 3600; @@ -108,8 +86,6 @@ char const s2_auth3_digest_str[] = char const s2_auth3_credentials[] = "Digest:\"s2test3\":abc:abc"; -int s2_nua_thread = 0; - /* -- NUA events -------------------------------------------------------- */ struct event *s2_remove_event(struct event *e) @@ -148,7 +124,7 @@ struct event *s2_next_event(void) if (s2->events) return s2_remove_event(s2->events); - su_root_step(s2->root, 100); + su_root_step(s2base->root, 100); } } @@ -165,7 +141,7 @@ struct event *s2_wait_for_event(nua_event_t event, int status) return s2_remove_event(e); } - su_root_step(s2->root, 100); + su_root_step(s2base->root, 100); } } @@ -230,540 +206,156 @@ s2_nua_callback(nua_event_t event, *prev = e, e->prev = prev; } -/* ---------------------------------------------------------------------- */ -/* SIP messages sent by nua */ -struct message * -s2_remove_message(struct message *m) +/* ====================================================================== */ + +nua_t *s2_nua_setup(char const *label, + tag_type_t tag, tag_value_t value, ...) { - if ((*m->prev = m->next)) - m->next->prev = m->prev; + ta_list ta; - m->prev = NULL, m->next = NULL; + s2_setup(label); - return m; + s2 = su_home_new(sizeof *s2); + + s2_dns_setup(s2base->root); + + s2_setup_logs(0); + s2_sip_setup("example.org", NULL, TAG_END()); + assert(s2sip->contact); + + s2_dns_domain("example.org", 1, + "s2", 1, s2sip->udp.contact->m_url, + "s2", 1, s2sip->tcp.contact->m_url, + NULL); + + /* enable/disable multithreading */ + su_root_threading(s2base->root, s2_nua_thread); + + ta_start(ta, tag, value); + s2->nua = + nua_create(s2base->root, + s2_nua_callback, + s2, + SIPTAG_FROM_STR("Alice "), + /* NUTAG_PROXY((url_string_t *)s2sip->contact->m_url), */ + /* Use internal DNS server */ + NUTAG_PROXY("sip:example.org"), + /* Force sresolv to use localhost and s2dns as DNS server */ +#if HAVE_WIN32 + SRESTAG_RESOLV_CONF("NUL"), +#else + SRESTAG_RESOLV_CONF("/dev/null"), +#endif + ta_tags(ta)); + ta_end(ta); + + return s2->nua; } void -s2_free_message(struct message *m) +s2_nua_fast_forward(unsigned long seconds, + su_root_t *steproot) { - if (m) { - if (m->prev) { - if ((*m->prev = m->next)) - m->next->prev = m->prev; - } - msg_destroy(m->msg); - tport_unref(m->tport); - free(m); - } + s2_fast_forward(seconds, NULL); + + if (s2_nua_thread) + /* Wake up nua thread */ + nua_handle_by_call_id(s2->nua, NULL); + + if (steproot) + su_root_step(steproot, 0); } -void s2_flush_messages(void) +void s2_nua_teardown(void) { - while (s2->received) { - s2_free_message(s2->received); - } -} - -struct message * -s2_next_response(void) -{ - struct message *m; - - for (;;) { - for (m = s2->received; m; m = m->next) { - if (m->sip->sip_status) - return s2_remove_message(m); - } - su_root_step(s2->root, 100); - } -} - -struct message * -s2_wait_for_response(int status, sip_method_t method, char const *name) -{ - struct message *m; - - for (;;) { - for (m = s2->received; m; m = m->next) { - if (!m->sip->sip_status) - continue; - - if (status != 0 && m->sip->sip_status->st_status != status) - continue; - - if (method == sip_method_unknown && name == NULL) - break; - - if (m->sip->sip_cseq == NULL) - continue; - - if (m->sip->sip_cseq->cs_method != method) - continue; - if (name == NULL) - break; - if (strcmp(m->sip->sip_cseq->cs_method_name, name) == 0) - break; - } - - if (m) - return s2_remove_message(m); - - su_root_step(s2->root, 100); - } -} - -int -s2_check_response(int status, sip_method_t method, char const *name) -{ - struct message *m = s2_wait_for_response(status, method, name); - s2_free_message(m); - return m != NULL; -} - - -struct message * -s2_next_request(void) -{ - struct message *m; - - for (;;) { - for (m = s2->received; m; m = m->next) { - if (m->sip->sip_request) - return s2_remove_message(m); - } - - su_root_step(s2->root, 100); + if (s2) { + struct s2nua *zap = s2; + nua_destroy(s2->nua), s2->nua = NULL; + s2 = NULL; + su_home_unref(zap->home); } - return NULL; + s2_dns_teardown(); + s2_sip_teardown(); + s2_teardown(); + } -struct message * -s2_wait_for_request(sip_method_t method, char const *name) -{ - return s2_wait_for_request_timeout(method, name, -1); -} +/* ====================================================================== */ -struct message * -s2_wait_for_request_timeout(sip_method_t method, char const *name, int timeout) -{ - struct message *m; - int t = timeout; - - for (;;) { - for (m = s2->received; m; m = m->next) { - if (m->sip->sip_request) { - if (method == sip_method_unknown && name == NULL) - return s2_remove_message(m); - - if (m->sip->sip_request->rq_method == method && - strcmp(m->sip->sip_request->rq_method_name, name) == 0) - return s2_remove_message(m); - } - } - - su_root_step(s2->root, 100); - if (timeout != -1 && ((t -= 100) <= 0)) - break; - } - - return NULL; -} - -int -s2_check_request(sip_method_t method, char const *name) -{ - struct message *m = s2_wait_for_request(method, name); - s2_free_message(m); - return m != NULL; -} - -int -s2_check_request_timeout(sip_method_t method, char const *name, int timeout) -{ - struct message *m = s2_wait_for_request_timeout(method, name, timeout); - s2_free_message(m); - return m != NULL; -} - -void -s2_save_uas_dialog(struct dialog *d, sip_t *sip) -{ - if (d && !d->local) { - assert(sip->sip_request); - d->local = sip_from_dup(d->home, sip->sip_to); - if (d->local->a_tag == NULL) - sip_from_tag(d->home, d->local, s2_generate_tag(d->home)); - d->remote = sip_to_dup(d->home, sip->sip_from); - d->call_id = sip_call_id_dup(d->home, sip->sip_call_id); - d->rseq = sip->sip_cseq->cs_seq; - /* d->route = sip_route_dup(d->home, sip->sip_record_route); */ - d->target = sip_contact_dup(d->home, sip->sip_contact); - } -} - -struct message * -s2_respond_to(struct message *m, struct dialog *d, - int status, char const *phrase, - tag_type_t tag, tag_value_t value, ...) -{ - ta_list ta; - msg_t *reply; - sip_t *sip; - su_home_t *home; - tp_name_t tpn[1]; - char *rport; - - assert(m); assert(m->msg); assert(m->tport); - assert(100 <= status && status < 700); - - s2_save_uas_dialog(d, m->sip); - - ta_start(ta, tag, value); - - reply = s2_msg(0); sip = sip_object(reply); home = msg_home(reply); - - assert(reply && home && sip); - - if (sip_add_tl(reply, sip, ta_tags(ta)) < 0) { - abort(); - } - - s2_complete_response(reply, status, phrase, m->msg); - - if (sip->sip_status && sip->sip_status->st_status > 100 && - sip->sip_to && !sip->sip_to->a_tag && - sip->sip_cseq && sip->sip_cseq->cs_method != sip_method_cancel) { - char const *ltag = NULL; - - if (d && d->local) - ltag = d->local->a_tag; - - if (ltag == NULL) - ltag = s2_generate_tag(home); - - if (sip_to_tag(msg_home(reply), sip->sip_to, ltag) < 0) { - assert(!"add To tag"); - } - } - - if (d && !d->contact) { - d->contact = sip_contact_dup(d->home, sip->sip_contact); - } - - *tpn = *tport_name(m->tport); - - rport = su_sprintf(home, "rport=%u", - ntohs(((su_sockaddr_t *) - msg_addrinfo(m->msg)->ai_addr)->su_port)); - - if (s2->server_uses_rport && - sip->sip_via->v_rport && - sip->sip_via->v_rport[0] == '\0') { - msg_header_add_param(home, sip->sip_via->v_common, rport); - } - - tpn->tpn_port = rport + strlen("rport="); - - tport_tsend(m->tport, reply, tpn, TPTAG_MTU(INT_MAX), ta_tags(ta)); - msg_destroy(reply); - - ta_end(ta); - - return m; -} - -/** Add headers from the request to the response message. */ -static int -s2_complete_response(msg_t *response, - int status, char const *phrase, - msg_t *request) -{ - su_home_t *home = msg_home(response); - sip_t *response_sip = sip_object(response); - sip_t const *request_sip = sip_object(request); - - int incomplete = 0; - - if (!response_sip || !request_sip || !request_sip->sip_request) - return -1; - - if (!response_sip->sip_status) - response_sip->sip_status = sip_status_create(home, status, phrase, NULL); - if (!response_sip->sip_via) - response_sip->sip_via = sip_via_dup(home, request_sip->sip_via); - if (!response_sip->sip_from) - response_sip->sip_from = sip_from_dup(home, request_sip->sip_from); - if (!response_sip->sip_to) - response_sip->sip_to = sip_to_dup(home, request_sip->sip_to); - if (!response_sip->sip_call_id) - response_sip->sip_call_id = - sip_call_id_dup(home, request_sip->sip_call_id); - if (!response_sip->sip_cseq) - response_sip->sip_cseq = sip_cseq_dup(home, request_sip->sip_cseq); - - if (!response_sip->sip_record_route && request_sip->sip_record_route) - sip_add_dup(response, response_sip, (void*)request_sip->sip_record_route); - - incomplete = sip_complete_message(response) < 0; - - msg_serialize(response, (msg_pub_t *)response_sip); - - if (incomplete || - !response_sip->sip_status || - !response_sip->sip_via || - !response_sip->sip_from || - !response_sip->sip_to || - !response_sip->sip_call_id || - !response_sip->sip_cseq || - !response_sip->sip_content_length || - !response_sip->sip_separator || - (request_sip->sip_record_route && !response_sip->sip_record_route)) - return -1; - - return 0; -} - -/* Send request (updating dialog). +/** Register NUA user. * - * Return zero upon success, nonzero upon failure. + *
+ *  A                  B
+ *  |-----REGISTER---->|
+ *  |<-----200 OK------|
+ *  |                  |
+ * 
*/ -int -s2_request_to(struct dialog *d, - sip_method_t method, char const *name, - tport_t *tport, - tag_type_t tag, tag_value_t value, ...) +void s2_register_setup(void) { - ta_list ta; - tagi_t const *tags; + nua_handle_t *nh; + struct message *m; - msg_t *msg = s2_msg(0); - sip_t *sip = sip_object(msg); - url_t const *target = NULL; - sip_cseq_t cseq[1]; - sip_via_t via[1]; char const *v_params[8]; - sip_content_length_t l[1]; - tp_name_t tpn[1]; - tp_magic_t *magic; - int user_via = 0; + assert(s2 && s2->nua); + assert(!s2->registration->nh); - ta_start(ta, tag, value); - tags = ta_args(ta); + nh = nua_handle(s2->nua, NULL, TAG_END()); - if (sip_add_tagis(msg, sip, &tags) < 0) - goto error; + nua_register(nh, TAG_END()); - if (sip->sip_request) - target = sip->sip_request->rq_url; - else if (d->target) - target = d->target->m_url; - else if (s2->registration->contact) - target = s2->registration->contact->m_url; - else - target = NULL; + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); + assert(m); - if (target == NULL) - goto error; + s2_save_register(m); - if (!sip->sip_request) { - sip_request_t *rq; - rq = sip_request_create(msg_home(msg), method, name, - (url_string_t *)target, NULL); - sip_header_insert(msg, sip, (sip_header_t *)rq); - } + s2_sip_respond_to(m, NULL, + SIP_200_OK, + SIPTAG_CONTACT(s2->registration->contact), + TAG_END()); + s2_sip_free_message(m); - if (!d->local && sip->sip_from) - d->local = sip_from_dup(d->home, sip->sip_from); - if (!d->contact && sip->sip_contact) - d->contact = sip_contact_dup(d->home, sip->sip_contact); - if (!d->remote && sip->sip_to) - d->remote = sip_to_dup(d->home, sip->sip_to); - if (!d->target && sip->sip_request) - d->target = sip_contact_create(d->home, - (url_string_t *)sip->sip_request->rq_url, - NULL); - if (!d->call_id && sip->sip_call_id) - d->call_id = sip_call_id_dup(d->home, sip->sip_call_id); - if (!d->lseq && sip->sip_cseq) - d->lseq = sip->sip_cseq->cs_seq; + assert(s2->registration->contact != NULL); + s2_check_event(nua_r_register, 200); - if (!d->local) - d->local = sip_from_dup(d->home, s2->local); - if (!d->contact) - d->contact = sip_contact_dup(d->home, s2->contact); - if (!d->remote) - d->remote = sip_to_dup(d->home, s2->registration->aor); - if (!d->call_id) - d->call_id = sip_call_id_create(d->home, NULL); - assert(d->local && d->contact); - assert(d->remote && d->target); - assert(d->call_id); - - if (tport == NULL) - tport = d->tport; - - if (tport == NULL) - tport = s2->registration->tport; - - if (tport == NULL && d->target->m_url->url_type == url_sips) - tport = s2->tls.tport; - - if (tport == NULL) - tport = s2->udp.tport; - else if (tport == NULL) - tport = s2->tcp.tport; - else if (tport == NULL) - tport = s2->tls.tport; - - assert(tport); - - *tpn = *tport_name(tport); - - if (tport_is_primary(tport)) { - tpn->tpn_host = target->url_host; - tpn->tpn_port = url_port(target); - if (!tpn->tpn_port || !tpn->tpn_port[0]) - tpn->tpn_port = url_port_default(target->url_type); - } - - magic = tport_magic(tport); - assert(magic != NULL); - - sip_cseq_init(cseq); - cseq->cs_method = method; - cseq->cs_method_name = name; - - if (d->invite && (method == sip_method_ack || method == sip_method_cancel)) { - cseq->cs_seq = sip_object(d->invite)->sip_cseq->cs_seq; - } - else { - cseq->cs_seq = ++d->lseq; - } - - if (sip->sip_via) { - user_via = 1; - } - else if (d->invite && method == sip_method_cancel) { - *via = *sip_object(d->invite)->sip_via; - } - else { - *via = *magic->via; - via->v_params = v_params; - v_params[0] = su_sprintf(msg_home(msg), "branch=z9hG4bK%lx", ++s2->tid); - v_params[1] = NULL; - } - - sip_content_length_init(l); - if (sip->sip_payload) - l->l_length = sip->sip_payload->pl_len; - - if (d->local->a_tag == NULL) { - char const *ltag = s2_generate_tag(d->home); - - if (sip_from_tag(d->home, d->local, ltag) < 0) { - assert(!"add To tag"); - } - - if (sip->sip_from && sip->sip_from->a_tag == NULL) { - if (sip_from_tag(msg_home(msg), sip->sip_from, ltag) < 0) { - assert(!"add To tag"); - } - } - } - - sip_add_tl(msg, sip, - TAG_IF(!sip->sip_from, SIPTAG_FROM(d->local)), - TAG_IF(!sip->sip_contact, SIPTAG_CONTACT(d->contact)), - TAG_IF(!sip->sip_to, SIPTAG_TO(d->remote)), - TAG_IF(!sip->sip_call_id, SIPTAG_CALL_ID(d->call_id)), - TAG_IF(!sip->sip_cseq, SIPTAG_CSEQ(cseq)), - TAG_IF(!user_via, SIPTAG_VIA(via)), - TAG_IF(!sip->sip_content_length, SIPTAG_CONTENT_LENGTH(l)), - TAG_IF(!sip->sip_separator, SIPTAG_SEPARATOR_STR("\r\n")), - TAG_END()); - - msg_serialize(msg, NULL); - - if (method == sip_method_invite) { - msg_destroy(d->invite); - d->invite = msg_ref_create(msg); - } - - tport = tport_tsend(tport, msg, tpn, ta_tags(ta)); - ta_end(ta); - - if (d->tport != tport) { - tport_unref(d->tport); - d->tport = tport_ref(tport); - } - - return tport ? 0 : -1; - - error: - ta_end(ta); - return -1; + s2->registration->nh = nh; } -/** Save information from response. +/** Un-register NUA user. * - * Send ACK for error messages to INVITE. + *
+ *  A                  B
+ *  |-----REGISTER---->|
+ *  |<-----200 OK------|
+ *  |                  |
+ * 
*/ -int s2_update_dialog(struct dialog *d, struct message *m) +void s2_register_teardown(void) { - int status = 0; + if (s2 && s2->registration->nh) { + nua_handle_t *nh = s2->registration->nh; + struct message *m; - if (m->sip->sip_status) - status = m->sip->sip_status->st_status; + nua_unregister(nh, TAG_END()); - if (100 < status && status < 300) { - d->remote = sip_to_dup(d->home, m->sip->sip_to); - if (m->sip->sip_contact) - d->contact = sip_contact_dup(d->home, m->sip->sip_contact); + m = s2_sip_wait_for_request(SIP_METHOD_REGISTER); assert(m); + s2_save_register(m); + s2_sip_respond_to(m, NULL, + SIP_200_OK, + SIPTAG_CONTACT(s2->registration->contact), + TAG_END()); + assert(s2->registration->contact == NULL); + + s2_sip_free_message(m); + + s2_check_event(nua_r_unregister, 200); + + nua_handle_destroy(nh); + s2->registration->nh = NULL; } - - if (300 <= status && m->sip->sip_cseq && - m->sip->sip_cseq->cs_method == sip_method_invite && - d->invite) { - msg_t *ack = s2_msg(0); - sip_t *sip = sip_object(ack); - sip_t *invite = sip_object(d->invite); - sip_request_t rq[1]; - sip_cseq_t cseq[1]; - tp_name_t tpn[1]; - - *rq = *invite->sip_request; - rq->rq_method = sip_method_ack, rq->rq_method_name = "ACK"; - *cseq = *invite->sip_cseq; - cseq->cs_method = sip_method_ack, cseq->cs_method_name = "ACK"; - - sip_add_tl(ack, sip, - SIPTAG_REQUEST(rq), - SIPTAG_VIA(invite->sip_via), - SIPTAG_FROM(invite->sip_from), - SIPTAG_TO(invite->sip_to), - SIPTAG_CALL_ID(invite->sip_call_id), - SIPTAG_CSEQ(cseq), - SIPTAG_CONTENT_LENGTH_STR("0"), - SIPTAG_SEPARATOR_STR("\r\n"), - TAG_END()); - - *tpn = *tport_name(d->tport); - if (!tport_is_secondary(d->tport) || - !tport_is_clear_to_send(d->tport)) { - tpn->tpn_host = rq->rq_url->url_host; - tpn->tpn_port = rq->rq_url->url_port; - } - - msg_serialize(ack, NULL); - tport_tsend(d->tport, ack, tpn, TAG_END()); - } - - return 0; } -/* ---------------------------------------------------------------------- */ - int s2_save_register(struct message *rm) { @@ -816,396 +408,9 @@ s2_save_register(struct message *rm) s2->registration->contact = contact; s2->registration->tport = tport_ref(rm->tport); + s2sip->sut.aor = s2->registration->aor; + s2sip->sut.contact = s2->registration->contact; + s2sip->sut.tport = s2->registration->tport; + return 0; } - -/* ---------------------------------------------------------------------- */ - -static char * -s2_generate_tag(su_home_t *home) -{ - s2_tag_generator += 1; - - return su_sprintf(home, "tag=N2-%s/%u", _s2case, s2_tag_generator); -} - -void s2_case(char const *number, - char const *title, - char const *description) -{ - _s2case = number; - - if (s2_start_stop) - printf("%s - starting %s %s\n", s2_tester, number, title); -} - -/* ---------------------------------------------------------------------- */ -/* tport interface */ -static void -s2_stack_recv(struct tester *s2, - tport_t *tp, - msg_t *msg, - tp_magic_t *magic, - su_time_t now) -{ - struct message *next = calloc(1, sizeof *next), **prev; - - next->msg = msg; - next->sip = sip_object(msg); - next->when = now; - next->tport = tport_ref(tp); - -#if 0 - if (next->sip->sip_request) - printf("nua sent: %s\n", next->sip->sip_request->rq_method_name); - else - printf("nua sent: SIP/2.0 %u %s\n", - next->sip->sip_status->st_status, - next->sip->sip_status->st_phrase); -#endif - - for (prev = &s2->received; *prev; prev = &(*prev)->next) - ; - - next->prev = prev, *prev = next; -} - -static void -s2_stack_error(struct tester *s2, - tport_t *tp, - int errcode, - char const *remote) -{ - fprintf(stderr, "%s(%p): error %d (%s) from %s\n", - "nua_tester_error", - (void *)tp, errcode, su_strerror(errcode), - remote ? remote : ""); -} - -static msg_t * -s2_stack_alloc(struct tester *s2, int flags, - char const data[], usize_t size, - tport_t const *tport, - tp_client_t *tpc) -{ - return msg_create(s2->mclass, flags | s2->flags); -} - -static msg_t * -s2_msg(int flags) -{ - return msg_create(s2->mclass, flags | s2->flags); -} - -tp_stack_class_t const s2_stack[1] = - {{ - /* tpac_size */ (sizeof s2_stack), - /* tpac_recv */ s2_stack_recv, - /* tpac_error */ s2_stack_error, - /* tpac_alloc */ s2_stack_alloc, - }}; - -/** Basic setup for test cases */ -void s2_setup_base(char const *label, char const *hostname) -{ - assert(s2 == NULL); - - if (s2_start_stop > 1) { - printf("%s - setup %s test case\n", s2_tester, label ? label : "next"); - } - - su_init(); - - s2 = su_home_new(sizeof *s2); - - assert(s2 != NULL); - - s2->root = su_root_create(s2); - - assert(s2->root != NULL); - - s2->local = sip_from_format(s2->home, "Bob ", - hostname ? hostname : "example.net"); - - if (hostname == NULL) - hostname = "127.0.0.1"; - - s2->hostname = hostname; - s2->tid = (unsigned long)time(NULL) * 510633671UL; - -} - -SOFIAPUBVAR su_log_t nua_log[]; -SOFIAPUBVAR su_log_t soa_log[]; -SOFIAPUBVAR su_log_t nea_log[]; -SOFIAPUBVAR su_log_t nta_log[]; -SOFIAPUBVAR su_log_t tport_log[]; -SOFIAPUBVAR su_log_t su_log_default[]; - -void -s2_setup_logs(int level) -{ - assert(s2); - - su_log_soft_set_level(nua_log, level); - su_log_soft_set_level(soa_log, level); - su_log_soft_set_level(su_log_default, level); - su_log_soft_set_level(nea_log, level); - su_log_soft_set_level(nta_log, level); - su_log_soft_set_level(tport_log, level); -} - -static char const * default_protocols[] = { "udp", "tcp", NULL }; - -void -s2_setup_tport(char const * const *protocols, - tag_type_t tag, tag_value_t value, ...) -{ - ta_list ta; - tp_name_t tpn[1]; - int bound; - tport_t *tp; - - assert(s2 != NULL); - - ta_start(ta, tag, value); - - if (s2->master == NULL) { - s2->master = tport_tcreate(s2, s2_stack, s2->root, - TPTAG_LOG(getenv("S2_TPORT_LOG") != NULL), - ta_tags(ta)); - - if (s2->master == NULL) { - assert(s2->master); - } - s2->mclass = sip_default_mclass(); - s2->flags = 0; - } - - memset(tpn, 0, (sizeof tpn)); - tpn->tpn_proto = "*"; - tpn->tpn_host = s2->hostname; - tpn->tpn_port = "*"; - - if (protocols == NULL) - protocols = default_protocols; - - bound = tport_tbind(s2->master, tpn, protocols, - TPTAG_SERVER(1), - ta_tags(ta)); - assert(bound != -1); - - tp = tport_primaries(s2->master); - - if (protocols == default_protocols && s2->contact == NULL) { - *tpn = *tport_name(tp); - s2->contact = sip_contact_format(s2->home, "", - tpn->tpn_host, - tpn->tpn_port); - } - - for (;tp; tp = tport_next(tp)) { - sip_via_t *v; - sip_contact_t *m; - tp_magic_t *magic; - - if (tport_magic(tp)) - continue; - - *tpn = *tport_name(tp); - - v = sip_via_format(s2->home, "SIP/2.0/%s %s:%s", - tpn->tpn_proto, - tpn->tpn_host, - tpn->tpn_port); - assert(v != NULL); - if (!su_casenmatch(tpn->tpn_proto, "tls", 3)) { - m = sip_contact_format(s2->home, "", - tpn->tpn_host, - tpn->tpn_port, - tpn->tpn_proto); - if (s2->udp.contact == NULL && su_casematch(tpn->tpn_proto, "udp")) { - s2->udp.tport = tport_ref(tp); - s2->udp.contact = m; - } - if (s2->tcp.contact == NULL && su_casematch(tpn->tpn_proto, "tcp")) { - s2->tcp.tport = tport_ref(tp); - s2->tcp.contact = m; - } - } - else if (!su_casematch(tpn->tpn_proto, "tls")) { - m = sip_contact_format(s2->home, "", - tpn->tpn_host, - tpn->tpn_port, - tpn->tpn_proto); - } - else { - m = sip_contact_format(s2->home, "", - tpn->tpn_host, - tpn->tpn_port); - if (s2->tls.contact == NULL) { - s2->tls.tport = tport_ref(tp); - s2->tls.contact = m; - } - } - assert(m != NULL); - - magic = su_zalloc(s2->home, (sizeof *magic)); - magic->via = v, magic->contact = m; - - if (s2->contact == NULL) - s2->contact = m; - - tport_set_magic(tp, magic); - } -} - -static char const *s2_teardown_label = NULL; - -void -s2_teardown_started(char const *label) -{ - if (!s2_teardown_label) { - s2_teardown_label = label; - if (s2_start_stop > 1) { - printf("%s - tearing down %s test case\n", s2_tester, label); - } - } -} - -void -s2_teardown(void) -{ - s2 = NULL; - su_deinit(); - - if (s2_start_stop > 1) { - printf("%s - %s test case tore down\n", s2_tester, - s2_teardown_label ? s2_teardown_label : "previous"); - } - - s2_teardown_label = NULL; -} - -/* ====================================================================== */ - -nua_t *s2_nua_setup(char const *label, - tag_type_t tag, tag_value_t value, ...) -{ - ta_list ta; - - s2_setup_base(label, NULL); - s2_dns_setup(s2->root); - - s2_setup_logs(0); - s2_setup_tport(NULL, TAG_END()); - assert(s2->contact); - s2_dns_domain("example.org", 1, - "s2", 1, s2->udp.contact->m_url, - "s2", 1, s2->tcp.contact->m_url, - NULL); - - /* enable/disable multithreading */ - su_root_threading(s2->root, s2_nua_thread); - - ta_start(ta, tag, value); - s2->nua = - nua_create(s2->root, - s2_nua_callback, - s2, - SIPTAG_FROM_STR("Alice "), - /* NUTAG_PROXY((url_string_t *)s2->contact->m_url), */ - /* Use internal DNS server */ - NUTAG_PROXY("sip:example.org"), - /* Force sresolv to use localhost and s2dns as DNS server */ -#if HAVE_WIN32 - SRESTAG_RESOLV_CONF("NUL"), -#else - SRESTAG_RESOLV_CONF("/dev/null"), -#endif - ta_tags(ta)); - ta_end(ta); - - return s2->nua; -} - -void s2_nua_teardown(void) -{ - nua_destroy(s2->nua); - s2->nua = NULL; - s2_dns_teardown(); - s2_teardown(); -} - -/* ====================================================================== */ - -/** Register NUA user. - * - *
- *  A                  B
- *  |-----REGISTER---->|
- *  |<-----200 OK------|
- *  |                  |
- * 
- */ -void s2_register_setup(void) -{ - nua_handle_t *nh; - struct message *m; - - assert(s2 && s2->nua); - assert(!s2->registration->nh); - - nh = nua_handle(s2->nua, NULL, TAG_END()); - - nua_register(nh, TAG_END()); - - m = s2_wait_for_request(SIP_METHOD_REGISTER); - assert(m); - s2_save_register(m); - - s2_respond_to(m, NULL, - SIP_200_OK, - SIPTAG_CONTACT(s2->registration->contact), - TAG_END()); - s2_free_message(m); - - assert(s2->registration->contact != NULL); - s2_check_event(nua_r_register, 200); - - s2->registration->nh = nh; -} - -/** Un-register NUA user. - * - *
- *  A                  B
- *  |-----REGISTER---->|
- *  |<-----200 OK------|
- *  |                  |
- * 
- */ -void s2_register_teardown(void) -{ - if (s2 && s2->registration->nh) { - nua_handle_t *nh = s2->registration->nh; - struct message *m; - - nua_unregister(nh, TAG_END()); - - m = s2_wait_for_request(SIP_METHOD_REGISTER); assert(m); - s2_save_register(m); - s2_respond_to(m, NULL, - SIP_200_OK, - SIPTAG_CONTACT(s2->registration->contact), - TAG_END()); - assert(s2->registration->contact == NULL); - - s2_free_message(m); - - s2_check_event(nua_r_unregister, 200); - - nua_handle_destroy(nh); - s2->registration->nh = NULL; - } -} diff --git a/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.h b/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.h index 773484893b..c9207ce431 100644 --- a/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.h +++ b/libs/sofia-sip/libsofia-sip-ua/nua/test_s2.h @@ -24,42 +24,20 @@ #ifndef S2TESTER_H #define S2TESTER_H -#define TP_STACK_T struct tester -#define SU_ROOT_MAGIC_T struct tester - #include #include #include #include +#include +#include "s2base.h" #include "s2util.h" +#include "s2sip.h" -struct tester +struct s2nua { su_home_t home[1]; - su_root_t *root; - msg_mclass_t const *mclass; - int flags; - - char const *hostname; - tport_t *master; - - sip_to_t *local; - sip_contact_t *contact; - struct { - sip_contact_t *contact; - tport_t *tport; - } udp, tcp, tls; - - struct message { - struct message *next, **prev; - msg_t *msg; - sip_t *sip; - tport_t *tport; - su_time_t when; - } *received; - nua_t *nua; struct event { @@ -76,33 +54,8 @@ struct tester sip_contact_t *contact; tport_t *tport; } registration[1]; - - unsigned long tid; - - /* Settings */ - int server_uses_rport; }; -struct dialog -{ - su_home_t home[1]; - sip_from_t *local; - sip_to_t *remote; - sip_call_id_t *call_id; - uint32_t lseq, rseq; - sip_contact_t *target; - sip_route_t *route; - sip_contact_t *contact; - - tport_t *tport; - msg_t *invite; /* latest invite sent */ -}; - -extern char const *s2_tester; -extern int s2_start_stop; -extern struct tester *s2; -extern tp_stack_class_t const s2_stack[1]; - extern unsigned s2_default_registration_duration; extern char const s2_auth_digest_str[]; extern char const s2_auth_credentials[]; @@ -115,9 +68,7 @@ extern char const s2_auth3_credentials[]; extern int s2_nua_thread; -void s2_case(char const *tag, - char const *title, - char const *description); +extern struct s2nua *s2; struct event *s2_remove_event(struct event *); void s2_free_event(struct event *); @@ -127,54 +78,23 @@ struct event *s2_next_event(void); struct event *s2_wait_for_event(nua_event_t event, int status); int s2_check_event(nua_event_t event, int status); int s2_check_callstate(enum nua_callstate state); - -struct message *s2_remove_message(struct message *m); -void s2_free_message(struct message *m); -void s2_flush_messages(void); - -struct message *s2_next_response(void); -struct message *s2_wait_for_response(int status, sip_method_t , char const *); -int s2_check_response(int status, sip_method_t method, char const *name); - -struct message *s2_next_request(void); -struct message *s2_wait_for_request(sip_method_t method, char const *name); -struct message *s2_wait_for_request_timeout(sip_method_t, char const *, - int timeout); -int s2_check_request(sip_method_t method, char const *name); -int s2_check_request_timeout(sip_method_t method, char const *, int timeout); - int s2_check_substate(struct event *e, enum nua_substate state); #define SIP_METHOD_UNKNOWN sip_method_unknown, NULL -void s2_save_uas_dialog(struct dialog *d, sip_t *sip); - -struct message *s2_respond_to(struct message *m, struct dialog *d, - int status, char const *phrase, - tag_type_t tag, tag_value_t value, ...); - -int s2_request_to(struct dialog *d, - sip_method_t method, char const *name, - tport_t *tport, - tag_type_t tag, tag_value_t value, ...); - -int s2_update_dialog(struct dialog *d, struct message *response); - -int s2_save_register(struct message *m); - void s2_flush_all(void); -void s2_setup_base(char const *label, char const *hostname); -void s2_setup_logs(int level); -void s2_setup_tport(char const * const *protocols, - tag_type_t tag, tag_value_t value, ...); -void s2_teardown(void); - nua_t *s2_nua_setup(char const *label, tag_type_t tag, tag_value_t value, ...); -void s2_teardown_started(char const *label); void s2_nua_teardown(void); + +void s2_nua_fast_forward(unsigned long seconds, + su_root_t *steproot); + +int s2_save_register(struct message *m); + void s2_register_setup(void); void s2_register_teardown(void); #endif +