Mercurial > dovecot > core-2.2
annotate src/lib-http/test-http-url.c @ 22656:1789bf2a1e01
director: Make sure HOST-RESET-USERS isn't used with max_moving_users=0
The reset command would just hang in that case. doveadm would never have
sent this, so this is just an extra sanity check.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 05 Nov 2017 23:51:56 +0200 |
parents | 2e2563132d5f |
children | cb108f786fb4 |
rev | line source |
---|---|
21390
2e2563132d5f
Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
19552
diff
changeset
|
1 /* Copyright (c) 2009-2017 Dovecot authors, see the included COPYING file */ |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
2 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
3 #include "lib.h" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
4 #include "net.h" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
5 #include "http-url.h" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
6 #include "test-common.h" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
7 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
8 struct valid_http_url_test { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
9 const char *url; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
10 enum http_url_parse_flags flags; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
11 struct http_url url_base; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
12 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
13 struct http_url url_parsed; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
14 }; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
15 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
16 /* Valid HTTP URL tests */ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
17 static struct valid_http_url_test valid_url_tests[] = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
18 /* Generic tests */ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
19 { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
20 .url = "http://localhost", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
21 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
22 .host_name = "localhost" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
23 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
24 .url = "http://www.%65%78%61%6d%70%6c%65.com", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
25 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
26 .host_name = "www.example.com" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
27 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
28 .url = "http://www.dovecot.org:8080", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
29 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
30 .host_name = "www.dovecot.org", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
31 .port = 8080, .have_port = TRUE } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
32 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
33 .url = "http://127.0.0.1", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
34 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
35 .host_name = "127.0.0.1", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
36 .have_host_ip = TRUE } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
37 #ifdef HAVE_IPV6 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
38 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
39 .url = "http://[::1]", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
40 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
41 .host_name = "[::1]", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
42 .have_host_ip = TRUE } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
43 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
44 .url = "http://[::1]:8080", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
45 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
46 .host_name = "[::1]", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
47 .have_host_ip = TRUE, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
48 .port = 8080, .have_port = TRUE } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
49 #endif |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
50 },{ |
16761
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
51 .url = "http://user@api.dovecot.org", |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
52 .flags = HTTP_URL_ALLOW_USERINFO_PART, |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
53 .url_parsed = { |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
54 .host_name = "api.dovecot.org", .user = "user" } |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
55 },{ |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
56 .url = "http://userid:secret@api.dovecot.org", |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
57 .flags = HTTP_URL_ALLOW_USERINFO_PART, |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
58 .url_parsed = { |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
59 .host_name = "api.dovecot.org", |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
60 .user = "userid", .password = "secret" } |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
61 },{ |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
62 .url = "http://su%3auserid:secret@api.dovecot.org", |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
63 .flags = HTTP_URL_ALLOW_USERINFO_PART, |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
64 .url_parsed = { |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
65 .host_name = "api.dovecot.org", |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
66 .user = "su:userid", .password = "secret" } |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
67 },{ |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
68 .url = "http://www.example.com/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
69 "?question=What%20are%20you%20doing%3f&answer=Nothing.", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
70 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
71 .path = "/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
72 .host_name = "www.example.com", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
73 .enc_query = "question=What%20are%20you%20doing%3f&answer=Nothing." } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
74 },{ |
17560
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
75 /* These next 2 URLs don't follow the recommendations in |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
76 http://tools.ietf.org/html/rfc1034#section-3.5 and |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
77 http://tools.ietf.org/html/rfc3696 |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
78 However they satisfy the grammar in |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
79 http://tools.ietf.org/html/rfc1123#section-2 and |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
80 http://tools.ietf.org/html/rfc952 |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
81 so we should parse them. |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
82 */ |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
83 .url = "http://256.0.0.1/that/reverts/to/DNS", |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
84 .url_parsed = { |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
85 .path = "/that/reverts/to/DNS", |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
86 .host_name = "256.0.0.1" |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
87 } |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
88 },{ |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
89 .url = "http://127.0.0.284/this/also/reverts/to/DNS", |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
90 .url_parsed = { |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
91 .path = "/this/also/reverts/to/DNS", |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
92 .host_name = "127.0.0.284" |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
93 } |
a39ccb12c14f
lib-http: test-http-url - add some tricky invalid numeric hostname URLs
Phil Carmody <phil@dovecot.fi>
parents:
17558
diff
changeset
|
94 },{ |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
95 .url = "http://www.example.com/#Status%20of%20development", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
96 .flags = HTTP_URL_ALLOW_FRAGMENT_PART, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
97 .url_parsed = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
98 .path = "/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
99 .host_name = "www.example.com", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
100 .enc_fragment = "Status%20of%20development" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
101 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
102 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
103 /* RFC 3986, Section 5.4. Reference Resolution Examples |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
104 * |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
105 * Within a representation with a well defined base URI of |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
106 * |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
107 * http://a/b/c/d;p?q |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
108 * |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
109 * a relative reference is transformed to its target URI as follows. |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
110 * |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
111 * 5.4.1. Normal Examples |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
112 */ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
113 },{ // "g" = "http://a/b/c/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
114 .url = "g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
115 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
116 .url_parsed = { .host_name = "a", .path = "/b/c/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
117 },{ // "./g" = "http://a/b/c/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
118 .url = "./g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
119 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
120 .url_parsed = { .host_name = "a", .path = "/b/c/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
121 },{ // "g/" = "http://a/b/c/g/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
122 .url = "g/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
123 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
124 .url_parsed = { .host_name = "a", .path = "/b/c/g/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
125 },{ // "/g" = "http://a/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
126 .url = "/g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
127 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
128 .url_parsed = { .host_name = "a", .path = "/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
129 },{ // "//g" = "http://g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
130 .url = "//g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
131 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
132 .url_parsed = { .host_name = "g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
133 },{ // "?y" = "http://a/b/c/d;p?y" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
134 .url = "?y", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
135 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
136 .url_parsed = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "y" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
137 },{ // "g?y" = "http://a/b/c/g?y" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
138 .url = "g?y", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
139 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
140 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
141 },{ // "#s" = "http://a/b/c/d;p?q#s" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
142 .url = "#s", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
143 .flags = HTTP_URL_ALLOW_FRAGMENT_PART, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
144 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
145 .url_parsed = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
146 .enc_fragment = "s" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
147 },{ // "g#s" = "http://a/b/c/g#s" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
148 .url = "g#s", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
149 .flags = HTTP_URL_ALLOW_FRAGMENT_PART, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
150 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
151 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_fragment = "s" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
152 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
153 },{ // "g?y#s" = "http://a/b/c/g?y#s" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
154 .url = "g?y#s", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
155 .flags = HTTP_URL_ALLOW_FRAGMENT_PART, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
156 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
157 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
158 .enc_fragment = "s" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
159 },{ // ";x" = "http://a/b/c/;x" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
160 .url = ";x", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
161 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
162 .url_parsed = { .host_name = "a", .path = "/b/c/;x" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
163 },{ // "g;x" = "http://a/b/c/g;x" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
164 .url = "g;x", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
165 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
166 .url_parsed = { .host_name = "a", .path = "/b/c/g;x" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
167 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
168 },{ // "g;x?y#s" = "http://a/b/c/g;x?y#s" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
169 .url = "g;x?y#s", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
170 .flags = HTTP_URL_ALLOW_FRAGMENT_PART, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
171 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
172 .url_parsed = { .host_name = "a", .path = "/b/c/g;x", .enc_query = "y", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
173 .enc_fragment = "s" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
174 },{ // "" = "http://a/b/c/d;p?q" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
175 .url = "", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
176 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
177 .url_parsed = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
178 },{ // "." = "http://a/b/c/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
179 .url = ".", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
180 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
181 .url_parsed = { .host_name = "a", .path = "/b/c/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
182 },{ // "./" = "http://a/b/c/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
183 .url = "./", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
184 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
185 .url_parsed = { .host_name = "a", .path = "/b/c/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
186 },{ // ".." = "http://a/b/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
187 .url = "..", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
188 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
189 .url_parsed = { .host_name = "a", .path = "/b/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
190 },{ // "../" = "http://a/b/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
191 .url = "../", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
192 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
193 .url_parsed = { .host_name = "a", .path = "/b/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
194 },{ // "../g" = "http://a/b/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
195 .url = "../g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
196 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
197 .url_parsed = { .host_name = "a", .path = "/b/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
198 },{ // "../.." = "http://a/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
199 .url = "../..", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
200 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
201 .url_parsed = { .host_name = "a", .path = "/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
202 },{ // "../../" = "http://a/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
203 .url = "../../", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
204 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
205 .url_parsed = { .host_name = "a", .path = "/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
206 },{ // "../../g" = "http://a/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
207 .url = "../../g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
208 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
209 .url_parsed = { .host_name = "a", .path = "/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
210 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
211 /* 5.4.2. Abnormal Examples |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
212 */ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
213 },{ // "../../../g" = "http://a/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
214 .url = "../../../g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
215 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
216 .url_parsed = { .host_name = "a", .path = "/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
217 },{ // "../../../../g" = "http://a/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
218 .url = "../../../../g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
219 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
220 .url_parsed = { .host_name = "a", .path = "/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
221 },{ // "/./g" = "http://a/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
222 .url = "/./g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
223 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
224 .url_parsed = { .host_name = "a", .path = "/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
225 },{ // "/../g" = "http://a/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
226 .url = "/../g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
227 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
228 .url_parsed = { .host_name = "a", .path = "/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
229 },{ // "g." = "http://a/b/c/g." |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
230 .url = "g.", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
231 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
232 .url_parsed = { .host_name = "a", .path = "/b/c/g." } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
233 },{ // ".g" = "http://a/b/c/.g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
234 .url = ".g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
235 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
236 .url_parsed = { .host_name = "a", .path = "/b/c/.g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
237 },{ // "g.." = "http://a/b/c/g.." |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
238 .url = "g..", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
239 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
240 .url_parsed = { .host_name = "a", .path = "/b/c/g.." } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
241 },{ // "..g" = "http://a/b/c/..g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
242 .url = "..g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
243 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
244 .url_parsed = { .host_name = "a", .path = "/b/c/..g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
245 },{ // "./../g" = "http://a/b/g" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
246 .url = "./../g", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
247 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
248 .url_parsed = { .host_name = "a", .path = "/b/g" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
249 },{ // "./g/." = "http://a/b/c/g/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
250 .url = "./g/.", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
251 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
252 .url_parsed = { .host_name = "a", .path = "/b/c/g/" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
253 },{ // "g/./h" = "http://a/b/c/g/h" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
254 .url = "g/./h", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
255 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
256 .url_parsed = { .host_name = "a", .path = "/b/c/g/h" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
257 },{ // "g/../h" = "http://a/b/c/h" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
258 .url = "g/../h", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
259 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
260 .url_parsed = { .host_name = "a", .path = "/b/c/h" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
261 },{ // "g;x=1/./y" = "http://a/b/c/g;x=1/y" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
262 .url = "g;x=1/./y", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
263 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
264 .url_parsed = { .host_name = "a", .path = "/b/c/g;x=1/y" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
265 },{ // "g;x=1/../y" = "http://a/b/c/y" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
266 .url = "g;x=1/../y", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
267 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
268 .url_parsed = { .host_name = "a", .path = "/b/c/y" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
269 },{ // "g?y/./x" = "http://a/b/c/g?y/./x" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
270 .url = "g?y/./x", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
271 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
272 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y/./x" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
273 },{ // "g?y/../x" = "http://a/b/c/g?y/../x" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
274 .url = "g?y/../x", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
275 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
276 .url_parsed = { .host_name = "a", .path = "/b/c/g", .enc_query = "y/../x" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
277 },{ // "g#s/./x" = "http://a/b/c/g#s/./x" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
278 .url = "g#s/./x", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
279 .flags = HTTP_URL_ALLOW_FRAGMENT_PART, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
280 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
281 .url_parsed = |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
282 { .host_name = "a", .path = "/b/c/g", .enc_fragment = "s/./x" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
283 },{ // "g#s/../x" = "http://a/b/c/g#s/../x" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
284 .url = "g#s/../x", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
285 .flags = HTTP_URL_ALLOW_FRAGMENT_PART, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
286 .url_base = { .host_name = "a", .path = "/b/c/d;p", .enc_query = "q" }, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
287 .url_parsed = |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
288 { .host_name = "a", .path = "/b/c/g", .enc_fragment = "s/../x" } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
289 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
290 }; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
291 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
292 static unsigned int valid_url_test_count = N_ELEMENTS(valid_url_tests); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
293 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
294 static void test_http_url_valid(void) |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
295 { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
296 unsigned int i; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
297 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
298 for (i = 0; i < valid_url_test_count; i++) T_BEGIN { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
299 const char *url = valid_url_tests[i].url; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
300 enum http_url_parse_flags flags = valid_url_tests[i].flags; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
301 struct http_url *urlt = &valid_url_tests[i].url_parsed; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
302 struct http_url *urlb = &valid_url_tests[i].url_base; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
303 struct http_url *urlp; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
304 const char *error = NULL; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
305 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
306 test_begin(t_strdup_printf("http url valid [%d]", i)); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
307 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
308 if (urlb->host_name == NULL) urlb = NULL; |
15431
c9f6deb65d7b
lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents:
15195
diff
changeset
|
309 if (http_url_parse(url, urlb, flags, pool_datastack_create(), &urlp, &error) < 0) |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
310 urlp = NULL; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
311 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
312 test_out_reason(t_strdup_printf("http_url_parse(%s)", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
313 valid_url_tests[i].url), urlp != NULL, error); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
314 if (urlp != NULL) { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
315 if (urlp->host_name == NULL || urlt->host_name == NULL) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
316 test_assert(urlp->host_name == urlt->host_name); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
317 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
318 test_assert(strcmp(urlp->host_name, urlt->host_name) == 0); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
319 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
320 if (!urlp->have_port) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
321 test_assert(urlp->have_port == urlt->have_port); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
322 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
323 test_assert(urlp->have_port == urlt->have_port && urlp->port == urlt->port); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
324 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
325 if (!urlp->have_host_ip) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
326 test_assert(urlp->have_host_ip == urlt->have_host_ip); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
327 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
328 test_assert(urlp->have_host_ip == urlt->have_host_ip); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
329 } |
16761
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
330 if (urlp->user == NULL || urlt->user == NULL) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
331 test_assert(urlp->user == urlt->user); |
16761
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
332 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
333 test_assert(strcmp(urlp->user, urlt->user) == 0); |
16761
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
334 } |
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
335 if (urlp->password == NULL || urlt->password == NULL) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
336 test_assert(urlp->password == urlt->password); |
16761
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
337 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
338 test_assert(strcmp(urlp->password, urlt->password) == 0); |
16761
ec9eab188dd8
lib-http: Added (non-default) support for parsing user:pasword from HTTP URL.
Stephan Bosch <stephan@rename-it.nl>
parents:
15715
diff
changeset
|
339 } |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
340 if (urlp->path == NULL || urlt->path == NULL) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
341 test_assert(urlp->path == urlt->path); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
342 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
343 test_assert(strcmp(urlp->path, urlt->path) == 0); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
344 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
345 if (urlp->enc_query == NULL || urlt->enc_query == NULL) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
346 test_assert(urlp->enc_query == urlt->enc_query); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
347 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
348 test_assert(strcmp(urlp->enc_query, urlt->enc_query) == 0); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
349 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
350 if (urlp->enc_fragment == NULL || urlt->enc_fragment == NULL) { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
351 test_assert(urlp->enc_fragment == urlt->enc_fragment); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
352 } else { |
17137
ff81b3f52e8f
lib-http: Fixed test-http-url not to crash with some libcs
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
353 test_assert(strcmp(urlp->enc_fragment, urlt->enc_fragment) == 0); |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
354 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
355 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
356 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
357 test_end(); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
358 } T_END; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
359 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
360 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
361 struct invalid_http_url_test { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
362 const char *url; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
363 enum http_url_parse_flags flags; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
364 struct http_url url_base; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
365 }; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
366 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
367 static struct invalid_http_url_test invalid_url_tests[] = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
368 { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
369 .url = "imap://example.com/INBOX" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
370 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
371 .url = "http:/www.example.com" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
372 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
373 .url = "" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
374 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
375 .url = "/index.html" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
376 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
377 .url = "http://www.example.com/index.html\"" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
378 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
379 .url = "http:///dovecot.org" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
380 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
381 .url = "http://[]/index.html" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
382 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
383 .url = "http://[v08.234:232:234:234:2221]/index.html" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
384 #ifdef HAVE_IPV6 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
385 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
386 .url = "http://[1::34a:34:234::6]/index.html" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
387 #endif |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
388 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
389 .url = "http://example%a.com/index.html" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
390 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
391 .url = "http://example.com%/index.html" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
392 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
393 .url = "http://example%00.com/index.html" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
394 },{ |
17558
f21e0f0e42a3
lib-http: test-http-url - make port number test cases harder
Phil Carmody <phil@dovecot.fi>
parents:
17137
diff
changeset
|
395 .url = "http://example.com:65536/index.html" |
f21e0f0e42a3
lib-http: test-http-url - make port number test cases harder
Phil Carmody <phil@dovecot.fi>
parents:
17137
diff
changeset
|
396 },{ |
f21e0f0e42a3
lib-http: test-http-url - make port number test cases harder
Phil Carmody <phil@dovecot.fi>
parents:
17137
diff
changeset
|
397 .url = "http://example.com:72817/index.html" |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
398 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
399 .url = "http://example.com/settings/%00/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
400 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
401 .url = "http://example.com/settings/%0r/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
402 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
403 .url = "http://example.com/settings/misc/%/" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
404 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
405 .url = "http://example.com/?%00" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
406 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
407 .url = "http://www.example.com/network.html#IMAP_Server" |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
408 },{ |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
409 .url = "http://example.com/#%00", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
410 .flags = HTTP_URL_ALLOW_FRAGMENT_PART |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
411 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
412 }; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
413 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
414 static unsigned int invalid_url_test_count = N_ELEMENTS(invalid_url_tests); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
415 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
416 static void test_http_url_invalid(void) |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
417 { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
418 unsigned int i; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
419 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
420 for (i = 0; i < invalid_url_test_count; i++) T_BEGIN { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
421 const char *url = invalid_url_tests[i].url; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
422 enum http_url_parse_flags flags = invalid_url_tests[i].flags; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
423 struct http_url *urlb = &invalid_url_tests[i].url_base; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
424 struct http_url *urlp; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
425 const char *error = NULL; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
426 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
427 if (urlb->host_name == NULL) |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
428 urlb = NULL; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
429 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
430 test_begin(t_strdup_printf("http url invalid [%d]", i)); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
431 |
15431
c9f6deb65d7b
lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents:
15195
diff
changeset
|
432 if (http_url_parse(url, urlb, flags, |
c9f6deb65d7b
lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents:
15195
diff
changeset
|
433 pool_datastack_create(), &urlp, &error) < 0) |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
434 urlp = NULL; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
435 test_out_reason(t_strdup_printf("parse %s", url), urlp == NULL, error); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
436 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
437 test_end(); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
438 } T_END; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
439 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
440 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
441 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
442 static const char *parse_create_url_tests[] = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
443 "http://www.example.com/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
444 "http://10.0.0.1/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
445 #ifdef HAVE_IPV6 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
446 "http://[::1]/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
447 #endif |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
448 "http://www.example.com:993/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
449 "http://www.example.com/index.html", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
450 "http://www.example.com/settings/index.html", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
451 "http://ww.%23example.com/", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
452 "http://www.example.com/%23shared/news", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
453 "http://www.example.com/query.php?name=Hendrik%20Visser", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
454 "http://www.example.com/network.html#IMAP%20Server", |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
455 }; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
456 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
457 static unsigned int |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
458 parse_create_url_test_count = N_ELEMENTS(parse_create_url_tests); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
459 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
460 static void test_http_url_parse_create(void) |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
461 { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
462 unsigned int i; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
463 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
464 for (i = 0; i < parse_create_url_test_count; i++) T_BEGIN { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
465 const char *url = parse_create_url_tests[i]; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
466 struct http_url *urlp; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
467 const char *error = NULL; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
468 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
469 test_begin(t_strdup_printf("http url parse/create [%d]", i)); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
470 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
471 if (http_url_parse |
15431
c9f6deb65d7b
lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents:
15195
diff
changeset
|
472 (url, NULL, HTTP_URL_ALLOW_FRAGMENT_PART, |
c9f6deb65d7b
lib-http: http_url_parse() now returns the http_url allocated from given memory pool.
Timo Sirainen <tss@iki.fi>
parents:
15195
diff
changeset
|
473 pool_datastack_create(), &urlp, &error) < 0) |
15195
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
474 urlp = NULL; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
475 test_out_reason(t_strdup_printf("parse %s", url), urlp != NULL, error); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
476 if (urlp != NULL) { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
477 const char *urlnew = http_url_create(urlp); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
478 test_out(t_strdup_printf |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
479 ("create %s", urlnew), strcmp(url, urlnew) == 0); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
480 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
481 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
482 test_end(); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
483 } T_END; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
484 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
485 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
486 |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
487 int main(void) |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
488 { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
489 static void (*test_functions[])(void) = { |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
490 test_http_url_valid, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
491 test_http_url_invalid, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
492 test_http_url_parse_create, |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
493 NULL |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
494 }; |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
495 return test_run(test_functions); |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
496 } |
70305d850220
Adds HTTP URL parse support.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
497 |