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

📄 torture_sip.c

📁 Sofia SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
💻 C
📖 第 1 页 / 共 5 页
字号:
    s = tls; end = s + strlen(s);    TEST_SIZE(sip_transport_d(&s, &result), 0); TEST_P(s, end);    TEST_S(result, sip_transport_tls);    s = sctp; end = s + strlen(s);    TEST_SIZE(sip_transport_d(&s, &result), 0); TEST_P(s, end);    TEST_S(result, sip_transport_sctp);    s = dtls; end = s + strlen(s);    TEST_SIZE(sip_transport_d(&s, &result), 0); TEST_P(s, end);    TEST_S(result, "SIP/2.0/TLS-UDP");    s = tls_sctp; end = s + strlen(s);    TEST_SIZE(sip_transport_d(&s, &result), 0); TEST_P(s, end);    TEST_S(result, "SIP/2.0/TLS-SCTP");  }  END();}/* Test <sip_basic.c> functions. */int test_basic(void){  su_home_t *home = su_home_new(sizeof *home);  BEGIN();  TEST_1(home);    {    sip_request_t *rq, *rq1;    rq = sip_request_make(home, "INVITE sip:joe@example.com SIP/2.1");    TEST_1(rq);    TEST(rq->rq_method, sip_method_invite);    TEST_S(rq->rq_method_name, "INVITE");    TEST_1(rq1 = sip_request_dup(home, rq));    su_free(home, rq);    su_free(home, rq1);        rq = sip_request_make(home, "invite sip:joe@example.com SIP/2.0");    TEST_1(rq);    TEST(rq->rq_method, sip_method_unknown);    TEST_S(rq->rq_method_name, "invite");    TEST_1(rq1 = sip_request_dup(home, rq));    su_free(home, rq);    su_free(home, rq1);    TEST_1(!sip_request_create(home, sip_method_unknown, NULL, 			       (void *)"sip:joe@example.com", NULL));    TEST_1(rq = sip_request_create(home, sip_method_unknown, "invite", 				   (void *)"sip:joe@example.com", NULL));    TEST(rq->rq_method, sip_method_unknown);    TEST_S(rq->rq_method_name, "invite");    su_free(home, rq);    TEST_1(rq = sip_request_create(home, sip_method_unknown, "INVITE", 				   (void *)"sip:joe@example.com", NULL));    TEST(rq->rq_method, sip_method_invite);    TEST_S(rq->rq_method_name, "INVITE");    su_free(home, rq);    TEST_1(rq = sip_request_create(home, sip_method_invite, "foobar", 				   (void *)"sip:joe@example.com", NULL));    TEST(rq->rq_method, sip_method_invite);    TEST_S(rq->rq_method_name, "INVITE");    su_free(home, rq);  }  {    sip_status_t *st;    TEST_1(st = sip_status_make(home, "SIP/2.0 200 OK"));    su_free(home, st);    TEST_1(st = sip_status_make(home, "SIP/2.0 200"));    su_free(home, st);    TEST_1(!sip_status_make(home, "SIP2.0 200 OK"));    TEST_1(!sip_status_create(home, 99, NULL, "SIP/2.1"));    TEST_1(!sip_status_create(home, 700, NULL, "SIP/2.1"));    TEST_1(st = sip_status_create(home, 200, "Ok", "SIP/2.2"));    su_free(home, st);    TEST_1(st = sip_status_create(home, 200, NULL, "SIP/2.0"));    su_free(home, st);    TEST_1(st = sip_status_create(home, 200, NULL, NULL));    su_free(home, st);    TEST_1(st = sip_status_create(home, 699, NULL, NULL));    su_free(home, st);  }  {    sip_payload_t *pl;    TEST_1(pl = sip_payload_create(home, "foo", 3));    su_free(home, pl);    TEST_1(pl = sip_payload_create(home, NULL, 3));    su_free(home, pl);  }  {    sip_separator_t *sep;    TEST_1(!sip_separator_make(home, "foo"));    TEST_1(sep = sip_separator_create(home));    su_free(home, sep);  }  /* Test name-addr things */  {    su_home_t home[1] = { SU_HOME_INIT(home) };    char const *display;    url_t url[1];    msg_param_t const *params;    char const *comment;    char const na[] = "Raaka Arska <tel:+358501970>;param=1;humppa (test) ";    char const na2[] = "tel:+358501970;param=1;humppa (test) ";    char *s, buf[sizeof(na)], ebuf[sizeof(na) + 32];    s = strcpy(buf, na);    TEST_1(sip_name_addr_d(home, &s, &display, url, &params, &comment) >= 0);    TEST_P(s, buf + strlen(na));    TEST_1(display);    TEST(url->url_type, url_tel);    TEST_1(params);    TEST_1(comment);    TEST_SIZE(sip_name_addr_e(ebuf, sizeof(ebuf), 0, display, 0, url, 			      params, comment), 	      strlen(na) - 1);    TEST_1(strncmp(na, ebuf, strlen(na) - 1) == 0);    s = strcpy(buf, na2);    TEST_1(sip_name_addr_d(home, &s, &display, url, &params, &comment) >= 0);    TEST_S(s, "");    TEST_P(s, buf + strlen(na2));    TEST_1(!display);    TEST(url->url_type, url_tel);    TEST_1(params);    TEST_1(comment);    su_home_deinit(home);  }  {    sip_from_t *f; sip_to_t *t, *t2;    TEST_1(f = sip_from_create(home, (void *)"sip:joe@bar"));    TEST_1(sip_from_add_param(home, f, NULL) == -1);    TEST_1(sip_from_add_param(home, f, "tag=tagged") == 0);    TEST_S(f->a_tag, "tagged");    TEST_1(sip_from_tag(home, f, "jxahudsf") == -1);    while (f->a_params && f->a_params[0])      msg_header_remove_param(f->a_common, f->a_params[0]);    TEST_P(f->a_tag, NULL);    TEST_1(sip_from_add_param(home, f, "test=1") == 0);    TEST_1(sip_from_tag(home, f, "jxahudsf") == 0);    TEST_S(f->a_tag, "jxahudsf");    su_free(home, f);    TEST_1(!sip_from_create(home, (void *)"sip:joe@[baa"));    TEST_1(!sip_from_make(home, (void *)"tester <>;tag=fasjfuios"));    TEST_1(f = sip_from_make(home, (void *)"sip:joe@bar (foo)"));    su_free(home, f);    TEST_1(f = sip_from_make(home, (void *)"<sip:joe@bar;tag=bar> (joe)"));    TEST_1(sip_from_tag(home, f, "tag=jxahudsf") == 0);    su_free(home, f);    TEST_1(f = sip_from_create(home, (void *)"<sip:joe@bar;tag=bar> (joe)"));    TEST_1(sip_is_from((sip_header_t*)f));    su_free(home, f);    TEST_1(t = sip_to_create(home, (void *)"<sip:joe@bar;tag=bar> (joe)"));    TEST_1(sip_is_to((sip_header_t*)t));    TEST_1(sip_to_tag(home, t, "tag=jxahudsf") == 0);    TEST_S(t->a_tag, "jxahudsf");    TEST(msg_header_replace_param(home, t->a_common, "tag=bar"), 1);    TEST_S(t->a_tag, "bar");    TEST_1(t2 = sip_to_dup(home, t));    TEST_S(t2->a_tag, "bar");    TEST(msg_header_remove_param(t->a_common, "tag"), 1);    TEST_P(t->a_tag, NULL);    TEST_1(sip_to_add_param(home, t, "tst=1") == 0);    TEST_P(t->a_tag, NULL);    su_free(home, t);  }  {    sip_call_id_t *i, *i0;    TEST_1(i = sip_call_id_create(home, "example.com"));    i->i_hash = 0;    TEST_1(i0 = sip_call_id_dup(home, i));    su_free(home, i);    TEST_1(i = sip_call_id_make(home, i0->i_id));    TEST(i->i_hash, i0->i_hash);    su_free(home, i);    su_free(home, i0);  }  {    sip_cseq_t *cs, *cs0;    TEST_1(cs = sip_cseq_create(home, 123456789, sip_method_invite, "1nvite"));    TEST(cs->cs_seq, 123456789);    TEST(cs->cs_method, sip_method_invite);    TEST_S(cs->cs_method_name, "INVITE");    su_free(home, cs);    TEST_1(cs = sip_cseq_create(home, 123456789, sip_method_invite, NULL));    TEST(cs->cs_seq, 123456789);    TEST(cs->cs_method, sip_method_invite);    TEST_S(cs->cs_method_name, "INVITE");    TEST_1(cs0 = sip_cseq_dup(home, cs));    su_free(home, cs);    su_free(home, cs0);    TEST_1(!sip_cseq_create(home, 123456789, sip_method_unknown, NULL));    TEST_1(cs = sip_cseq_create(home, 123456789, sip_method_unknown, 				"invite"));    TEST(cs->cs_seq, 123456789);    TEST(cs->cs_method, sip_method_unknown);    TEST_S(cs->cs_method_name, "invite");    TEST_1(cs0 = sip_cseq_dup(home, cs));    su_free(home, cs);    su_free(home, cs0);  }  {    sip_contact_t *m, *m0;    TEST_1(!sip_contact_make(home, ",,"));        TEST_1(m = sip_contact_create(home, (void *)"sip:joe@bar", 				  "q=0.2", 				  "+message",				  NULL));    TEST_S(m->m_q, "0.2");    TEST_1(m0 = sip_contact_dup(home, m));    TEST_1(sip_contact_add_param(home, m, "q=0.5") >= 0);    TEST_1(sip_contact_add_param(home, m, "video=FALSE") >= 0);    TEST_1(sip_contact_add_param(home, m, NULL) == -1);    TEST_1(sip_contact_add_param(home, NULL, "video=FALSE") == -1);    TEST_1(sip_contact_add_param(home, m, "audio=FALSE") == 0);    TEST_1(sip_contact_add_param(home, m, "expires=0") == 0);    TEST_S(m->m_q, "0.5");    TEST_S(m->m_expires, "0");        TEST_1(!sip_contact_create(home, (void *)"sip:joe@[baa",			       "audio", "video", NULL));    TEST_1(sip_header_format(home, sip_contact_class, "*"));    su_free(home, m);    su_free(home, m0);  }  {    sip_via_t *v;    char *s;    v = sip_via_make(home, "SIP/2.0/UDP domain.invalid:5060"); TEST_1(v);    s = sip_contact_string_from_via(home, v, NULL, v->v_protocol);    TEST_S(s, "<sip:domain.invalid;transport=udp>");    su_free(home, v), su_free(home, s);    TEST_1(sip_transport_has_tls("SIP/2.0/TLS-SCTP"));    TEST_1(sip_transport_has_tls("TLS-UDP"));    v = sip_via_make(home, "SIP/2.0/TLS-SCTP domain.invalid"); TEST_1(v);    s = sip_contact_string_from_via(home, v, NULL, v->v_protocol);    TEST_S(s, "<sips:domain.invalid;transport=tls-sctp>");    su_free(home, v), su_free(home, s);  }  {    sip_expires_t *ex;    TEST_1(!sip_expires_make(home, "-12+1"));    TEST_1(ex = sip_expires_make(home, "4294967297")); /* XXX */    su_free(home, ex);    TEST_1(ex = sip_expires_make(home, "Wed, 25 Mar 2004 14:49:29 GMT"));     su_free(home, ex);    TEST_1(ex = sip_expires_create(home, 3600));    su_free(home, ex);  }  {    sip_retry_after_t *ra;    char const *s;    TEST_1(!(ra = sip_retry_after_make(home, "50 (foo")));    TEST_1(ra = sip_retry_after_make(home, "50 (foo) ; duration = 13"));    TEST_S(ra->af_duration, "13");    TEST_S(ra->af_comment, "foo");    TEST(msg_header_remove_param(ra->af_common, "duration"), 1);    TEST_P(ra->af_duration, NULL);    s = sip_header_as_string(home, (void*)ra);    TEST_S(s, "50 (foo)");    TEST(msg_header_add_param(home, ra->af_common, "x=z"), 0);    s = sip_header_as_string(home, (void*)ra);    TEST_S(s, "50 (foo) ;x=z");    su_free(home, ra);  }  {    sip_date_t *d;    TEST_1(!(d = sip_date_make(home, "Mon, 30 Feb 1896 23:59:59 GMT")));    su_free(home, d);    TEST_1(d = sip_date_create(home, (1<<30)));    su_free(home, d);    TEST_1(d = sip_date_create(home, 0));    TEST_1(d->d_time != 0);    su_free(home, d);  }  {    sip_route_t *r, *r0;    TEST_1(!sip_route_make(home, "<sip:foo@[bar:50>;lr"));    TEST_1(r = sip_route_make(home, "<sip:foo@[baa::1]:5060>;lr"));    TEST_1(r0 = sip_route_dup(home, r));    TEST_1(sip_route_fix(r));    TEST_1(url_has_param(r->r_url, "lr"));    su_free(home, r);     TEST_1(r = sip_route_create(home, r0->r_url, r0->r_url));    su_free(home, r); su_free(home, r0);  }  {    sip_record_route_t *r, *r0;    TEST_1(!sip_record_route_make(home, "<sip:foo@[bar:50>;lr"));    TEST_1(!sip_record_route_make(home, "<sip:foo@[baa::1]>;lr bar, sip:foo"));    TEST_1(r = sip_record_route_make(home, "<sip:foo@[baa::1]:5060>;lr"));    TEST_1(r0 = sip_record_route_dup(home, r));    su_free(home, r);    TEST_1(r = sip_route_create(home, r0->r_url, r0->r_url));    su_free(home, r), su_free(home, r0);  }  {    sip_via_t *v, *v0;    TEST_1(!sip_via_make(home, ",,"));    TEST_1(!sip_via_make(home, "SIP// host:5060 (foo),"));    TEST_1(!sip_via_make(home, "SIP/2.0/TCP host:5060 (foo) bar,"));    TEST_1(!sip_via_make(home, "SIP/2.0/TCP [3ffe::1:5060 (foo),"));        TEST_1(v = sip_via_create(home, "bar.com", 			      "50600", 			      "SIP/2.0/UDP",			      "hidden",			      "rport=50601",			      "comp=sigcomp",			      "branch=1",			      "q=0.2",			      NULL));    TEST_S(v->v_branch, "1");    TEST_S(v->v_rport, "50601");    TEST_S(v->v_comp, "sigcomp");    TEST_1(v = sip_via_make(home, "SIP/2.0/UDP bar.com:50600"			    " ;hidden;rport=50601;comp=sigcomp;branch=1;ttl=15"			    " ; maddr=[::227.0.0.1]"			    " (This is a comment) "));    TEST_S(v->v_ttl, "15");    TEST_S(v->v_maddr, "[::227.0.0.1]");    TEST_S(v->v_branch, "1");    TEST_S(v->v_rport, "50601");    TEST_S(v->v_comp, "sigcomp");        TEST_1(v0 = sip_via_dup(home, v));    TEST(msg_header_add_param(home, v->v_common, "rport"), 0);    TEST_S(v->v_rport, "");    TEST(msg_header_remove_param(v->v_common, "comp"), 1);    TEST_P(v->v_comp, NULL);

⌨️ 快捷键说明

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