⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_nta.c

📁 Sofia SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
💻 C
📖 第 1 页 / 共 5 页
字号:
			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   SIPTAG_VIA(via),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_server_leg);    nta_agent_set_params(ag->ag_agent, 			 NTATAG_USER_VIA(0),			 TAG_END());  }  /* Test 0.7   * Send a message from Bob to Alice using SCTP    */  if (sctp) {    url_t url[1];    sip_payload_t *pl;    usize_t size = 16 * 1024;    client_t ctx[1] = {{ ag, "Test 0.7", check_via_with_sctp }};    *url = *ag->ag_aliases->m_url;    url->url_user = "alice";#if 0    if (url->url_params)      url->url_params = su_sprintf(NULL, "%s;transport=sctp", url->url_params);    else#endif      url->url_params = "transport=sctp";    TEST_1(pl = test_payload(ag->ag_home, size));    ag->ag_expect_leg = ag->ag_server_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_bob),			   SIPTAG_TO(ag->ag_alice),			   SIPTAG_CONTACT(ag->ag_m_bob),			   SIPTAG_PAYLOAD(pl),			   TAG_END());    su_free(ag->ag_home, pl);    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_server_leg);  }  /* Test 0.8: Send a too large message */  if (tcp) {    url_t url[1];    sip_payload_t *pl;    usize_t size = 128 * 1024;    client_t ctx[1] = {{ ag, "Test 0.8" }};    nta_agent_set_params(ag->ag_agent, 			 NTATAG_MAXSIZE(65536),			 TAG_END());    *url = *ag->ag_aliases->m_url;    url->url_user = "alice";    TEST_1(pl = test_payload(ag->ag_home, size));    ag->ag_expect_leg = ag->ag_server_leg;    ag->ag_latest_leg = NULL;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_bob),			   SIPTAG_TO(ag->ag_alice),			   SIPTAG_CONTACT(ag->ag_m_bob),			   SIPTAG_PAYLOAD(pl),			   TAG_END());    su_free(ag->ag_home, pl);    TEST_1(!client_run(ctx, 413));    TEST_P(ag->ag_latest_leg, NULL);    nta_agent_set_params(ag->ag_agent, 			 NTATAG_MAXSIZE(2 * 1024 * 1024),			 TAG_END());  }  /* Test 0.9: Timeout */  {    url_t url[1];    client_t ctx[1] = {{ ag, "Test 0.9" }};    printf("%s: starting MESSAGE timeout test, completing in 4 seconds\n",	   name);    nta_agent_set_params(ag->ag_agent, 			 NTATAG_TIMEOUT_408(1),			 NTATAG_SIP_T1(25), 			 NTATAG_SIP_T1X64(64 * 25), 			 NTATAG_SIP_T2(8 * 25),			 NTATAG_SIP_T4(10 * 25),			 TAG_END());    *url = *ag->ag_aliases->m_url;    url->url_user = "timeout";    url->url_port = ag->ag_sink_port;    ag->ag_expect_leg = ag->ag_server_leg;    ag->ag_latest_leg = NULL;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_bob),			   SIPTAG_TO(ag->ag_alice),			   SIPTAG_CONTACT(ag->ag_m_bob),			   TAG_END());    TEST_1(!client_run(ctx, 408));    TEST_P(ag->ag_latest_leg, NULL);    nta_agent_set_params(ag->ag_agent,			 NTATAG_SIP_T1(500),			 NTATAG_SIP_T1X64(64 * 500),			 NTATAG_SIP_T2(NTA_SIP_T2),			 NTATAG_SIP_T4(NTA_SIP_T4),			 TAG_END());  }    END();}int leg_callback_destroy(agent_t *ag,			 nta_leg_t *leg,			 nta_incoming_t *irq,			 sip_t const *sip){  if (tstflags & tst_verbatim) {    printf("%s: %s: %s " URL_PRINT_FORMAT " %s\n",	   name, __func__, sip->sip_request->rq_method_name, 	   URL_PRINT_ARGS(sip->sip_request->rq_url),	   sip->sip_request->rq_version);  }  ag->ag_latest_leg = leg;  nta_incoming_destroy(irq);  return 0;}int leg_callback_save(agent_t *ag,		      nta_leg_t *leg,		      nta_incoming_t *irq,		      sip_t const *sip){  if (tstflags & tst_verbatim) {    printf("%s: %s: %s " URL_PRINT_FORMAT " %s\n",	   name, __func__, sip->sip_request->rq_method_name, 	   URL_PRINT_ARGS(sip->sip_request->rq_url),	   sip->sip_request->rq_version);  }  ag->ag_latest_leg = leg;  ag->ag_irq = irq;  ag->ag_running = 0;  return 0;}int test_destroy_incoming(agent_t *ag){  BEGIN();  url_t url[1];  *url = *ag->ag_contact->m_url;  {    client_t ctx[1] = {{ ag, "Test 3.1" }};    /* Test 3.1     * Check that when a incoming request is destroyed in callback,      * a 500 response is sent     */    ag->ag_expect_leg = ag->ag_default_leg;    nta_leg_bind(ag->ag_default_leg, leg_callback_destroy, ag);        ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, 			   outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   TAG_END());    TEST_1(!client_run(ctx, 500));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 3.2     * Check that when an incoming request is destroyed, a 500 response is sent     */    client_t ctx[1] = {{ ag, "Test 3.2" }};    nta_leg_bind(ag->ag_default_leg, leg_callback_save, ag);        ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, 			   outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   TAG_END());    TEST_1(ctx->c_orq);    nta_test_run(ag);    TEST(ctx->c_status, 0);    TEST_1(ag->ag_irq);    TEST_1(ctx->c_orq);    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);    nta_incoming_destroy(ag->ag_irq), ag->ag_irq = NULL;    TEST_1(!client_run(ctx, 500));  }  END();}int test_resolv(agent_t *ag, char const *resolv_conf){  int udp = 0, tcp = 0, sctp = 0, tls = 0;  sip_via_t const *v;  url_t *url;  if (!resolv_conf)    return 0;  BEGIN();  nta_leg_bind(ag->ag_default_leg, leg_callback_200, ag);  nta_agent_set_params(ag->ag_agent, 		       NTATAG_SIP_T1(8 * 25), 		       NTATAG_SIP_T1X64(64 * 25), 		       NTATAG_SIP_T4(10 * 25),		       TAG_END());  TEST_1(v = nta_agent_via(ag->ag_agent));  for (; v; v = v->v_next) {    if (strcasecmp(v->v_protocol, sip_transport_udp) == 0)      udp = 1;    else if (strcasecmp(v->v_protocol, sip_transport_tcp) == 0)      tcp = 1;    else if (strcasecmp(v->v_protocol, sip_transport_sctp) == 0)      sctp = 1;    else if (strcasecmp(v->v_protocol, sip_transport_tls) == 0)      tls = 1;  }  url = url_hdup(ag->ag_home, (void *)"sip:example.org"); TEST_1(url);  {    /* Test 1.1     * Send a message to sip:example.org     */    client_t ctx[1] = {{ ag, "Test 1.1" }};    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 1.2     * Send a message to sip:srv.example.org     */    client_t ctx[1] = {{ ag, "Test 1.2" }};    url->url_host = "srv.example.org";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 1.3     * Send a message to sip:ipv.example.org     */    client_t ctx[1] = {{ ag, "Test 1.3" }};    url->url_host = "ipv.example.org";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 1.4.1     * Send a message to sip:down.example.org     */    client_t ctx[1] = {{ ag, "Test 1.4.1" }};    url->url_host = "down.example.org";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 1.4.2     * Send a message to sip:na503.example.org     */    client_t ctx[1] = {{ ag, "Test 1.4.2" }};    url->url_host = "na503.example.org";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 503));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 1.4.3     * Send a message to sip:nona.example.org     */    client_t ctx[1] = {{ ag, "Test 1.4.3" }};    url->url_host = "nona.example.org";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 1.4.4     * Send a message to sip:nosrv.example.org     * After failing to find _sip._udp.nosrv.example.org,     * second SRV with _sip._udp.srv.example.org succeeds     */    client_t ctx[1] = {{ ag, "Test 1.4.4" }};    url->url_host = "nosrv.example.org";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);  }  {    /* Test 1.5.1      * Send a message to sip:srv.example.org;transport=tcp     * Test outgoing_make_srv_query()     */    client_t ctx[1] = {{ ag, "Test 1.5.1: outgoing_make_srv_query()" }};    url->url_host = "srv.example.org";    url->url_params = "transport=tcp";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);    url->url_params = NULL;  }  {    /* Test 1.5.2     * Send a message to sip:srv.example.org;transport=udp     * Test outgoing_make_srv_query()     */    client_t ctx[1] = {{ ag, "Test 1.5.2: outgoing_make_srv_query()" }};    url->url_host = "srv.example.org";    url->url_params = "transport=udp";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);    url->url_params = NULL;  }  {    /* Test 1.5.3     * Send a message to sip:srv2.example.org;transport=udp     * Test outgoing_query_srv_a()     */    client_t ctx[1] = {{ ag, "Test 1.5: outgoing_query_srv_a()" }};    url->url_host = "srv2.example.org";    url->url_params = "transport=udp";    ag->ag_expect_leg = ag->ag_default_leg;    ctx->c_orq =       nta_outgoing_tcreate(ag->ag_default_leg, outgoing_callback, ctx,			   ag->ag_obp,			   SIP_METHOD_MESSAGE,			   (url_string_t *)url,			   SIPTAG_SUBJECT_STR(ctx->c_name),			   SIPTAG_FROM(ag->ag_alice),			   SIPTAG_TO(ag->ag_bob),			   SIPTAG_CONTACT(ag->ag_m_alice),			   TAG_END());    TEST_1(!client_run(ctx, 200));    TEST_P(ag->ag_latest_leg, ag->ag_default_leg);    url->url_params = NULL;  }  {    /* Test 1.6.1     * Send a message to sip:srv.example.org:$port     * Test outgoing_make_a_aaaa_query()     */    client_t ctx[1] = {{ ag, "Test 1.6.1: outgoing_make_a_aaaa_query()" }};    url->url_host = "srv.example.org";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -