comparison src/http/ngx_http_parse.c @ 256:2e9c57a5e50a NGINX_0_4_13

nginx 0.4.13 *) Feature: the "proxy_pass" directive may be used inside the "limit_except" block. *) Feature: the "limit_except" directive supports all WebDAV methods. *) Bugfix: if the "add_before_body" directive was used without the "add_after_body" directive, then an response did not transferred complete. *) Bugfix: a large request body did not receive if the epoll method and the deferred accept() were used. *) Bugfix: a charset could not be set for ngx_http_autoindex_module responses; bug appeared in 0.3.50. *) Bugfix: the "[alert] zero size buf" error when FastCGI server was used; *) Bugfix: the --group= configuration parameter was ignored. Thanks to Thomas Moschny. *) Bugfix: the 50th subrequest in SSI response did not work; bug appeared in 0.3.50.
author Igor Sysoev <http://sysoev.ru>
date Wed, 15 Nov 2006 00:00:00 +0300
parents f3ec44f4a53b
children 6ae1357b7b7c
comparison
equal deleted inserted replaced
255:a13bad126e69 256:2e9c57a5e50a
92 switch (p - m) { 92 switch (p - m) {
93 93
94 case 3: 94 case 3:
95 if (m[0] == 'G' && m[1] == 'E' && m[2] == 'T') { 95 if (m[0] == 'G' && m[1] == 'E' && m[2] == 'T') {
96 r->method = NGX_HTTP_GET; 96 r->method = NGX_HTTP_GET;
97 97 break;
98 } else if (m[0] == 'P' && m[1] == 'U' && m[2] == 'T') { 98 }
99
100 if (m[0] == 'P' && m[1] == 'U' && m[2] == 'T') {
99 r->method = NGX_HTTP_PUT; 101 r->method = NGX_HTTP_PUT;
102 break;
100 } 103 }
104
101 break; 105 break;
102 106
103 case 4: 107 case 4:
104 if (m[0] == 'P' && m[1] == 'O' 108 if (m[1] == 'O') {
105 && m[2] == 'S' && m[3] == 'T') 109
106 { 110 if (m[0] == 'P' && m[2] == 'S' && m[3] == 'T') {
107 r->method = NGX_HTTP_POST; 111 r->method = NGX_HTTP_POST;
108 112 break;
109 } else if (m[0] == 'H' && m[1] == 'E' 113 }
110 && m[2] == 'A' && m[3] == 'D') 114
111 { 115 if (m[0] == 'C' && m[2] == 'P' && m[3] == 'Y') {
112 r->method = NGX_HTTP_HEAD; 116 r->method = NGX_HTTP_COPY;
117 break;
118 }
119
120 if (m[0] == 'M' && m[2] == 'V' && m[3] == 'E') {
121 r->method = NGX_HTTP_MOVE;
122 break;
123 }
124
125 if (m[0] == 'L' && m[2] == 'C' && m[3] == 'K') {
126 r->method = NGX_HTTP_LOCK;
127 break;
128 }
129
130 } else {
131
132 if (m[0] == 'H' && m[1] == 'E'
133 && m[2] == 'A' && m[3] == 'D')
134 {
135 r->method = NGX_HTTP_HEAD;
136 break;
137 }
113 } 138 }
139
114 break; 140 break;
115 141
116 case 5: 142 case 5:
117 if (m[0] == 'M' && m[1] == 'K' 143 if (m[0] == 'M' && m[1] == 'K'
118 && m[2] == 'C' && m[3] == 'O' && m[4] == 'L') 144 && m[2] == 'C' && m[3] == 'O' && m[4] == 'L')
119 { 145 {
120 r->method = NGX_HTTP_MKCOL; 146 r->method = NGX_HTTP_MKCOL;
121 } 147 }
148
122 break; 149 break;
123 150
124 case 6: 151 case 6:
125 if (m[0] == 'D' && m[1] == 'E' && m[2] == 'L' 152 if (m[0] == 'D' && m[1] == 'E' && m[2] == 'L'
126 && m[3] == 'E' && m[4] == 'T' && m[5] == 'E') 153 && m[3] == 'E' && m[4] == 'T' && m[5] == 'E')
127 { 154 {
128 r->method = NGX_HTTP_DELETE; 155 r->method = NGX_HTTP_DELETE;
156 break;
129 } 157 }
158
159 if (m[0] == 'U' && m[1] == 'N' && m[2] == 'L'
160 && m[3] == 'O' && m[4] == 'C' && m[5] == 'K')
161 {
162 r->method = NGX_HTTP_UNLOCK;
163 break;
164 }
165
166 break;
167
168 case 7:
169 if (m[0] == 'O' && m[1] == 'P'
170 && m[2] == 'T' && m[3] == 'I'
171 && m[4] == 'O' && m[5] == 'N' && m[6] == 'S')
172 {
173 r->method = NGX_HTTP_OPTIONS;
174 }
175
176 break;
177
178 case 8:
179 if (m[0] == 'P' && m[1] == 'R'
180 && m[2] == 'O' && m[3] == 'P' && m[4] == 'F'
181 && m[5] == 'I' && m[6] == 'N' && m[7] == 'D')
182 {
183 r->method = NGX_HTTP_PROPFIND;
184 }
185
186 break;
187
188 case 9:
189 if (m[0] == 'P' && m[1] == 'R' && m[2] == 'O'
190 && m[3] == 'P' && m[4] == 'P' && m[5] == 'A'
191 && m[6] == 'T' && m[7] == 'C' && m[8] == 'H')
192 {
193 r->method = NGX_HTTP_PROPPATCH;
194 }
195
130 break; 196 break;
131 } 197 }
132 198
133 state = sw_spaces_before_uri; 199 state = sw_spaces_before_uri;
134 break; 200 break;