comparison src/http/ngx_http_request.h @ 91:637625a2acdb

nginx-0.0.1-2003-05-19-20:39:14 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 19 May 2003 16:39:14 +0000
parents
children a23d010f356d
comparison
equal deleted inserted replaced
90:37530da31268 91:637625a2acdb
1 #ifndef _NGX_HTTP_REQUEST_H_INCLUDED_
2 #define _NGX_HTTP_REQUEST_H_INCLUDED_
3
4
5 #if 0
6 #include <ngx_config.h>
7
8 #include <ngx_types.h>
9 #include <ngx_string.h>
10 #include <ngx_table.h>
11 #include <ngx_hunk.h>
12 #include <ngx_files.h>
13 #include <ngx_connection.h>
14 #include <ngx_conf_file.h>
15
16 #endif
17
18
19 #define NGX_HTTP_VERSION_9 9
20 #define NGX_HTTP_VERSION_10 1000
21 #define NGX_HTTP_VERSION_11 1001
22
23 #define NGX_HTTP_GET 1
24 #define NGX_HTTP_HEAD 2
25 #define NGX_HTTP_POST 3
26
27 #define NGX_HTTP_CONN_CLOSE 0
28 #define NGX_HTTP_CONN_KEEP_ALIVE 1
29
30
31 #define NGX_HTTP_PARSE_HEADER_DONE 1
32 #define NGX_HTTP_PARSE_INVALID_METHOD 10
33 #define NGX_HTTP_PARSE_INVALID_REQUEST 11
34 #define NGX_HTTP_PARSE_TOO_LONG_URI 12
35 #define NGX_HTTP_PARSE_INVALID_09_METHOD 13
36 #define NGX_HTTP_PARSE_INVALID_HEADER 14
37 #define NGX_HTTP_PARSE_TOO_LONG_HEADER 15
38 #define NGX_HTTP_PARSE_NO_HOST_HEADER 16
39 #define NGX_HTTP_PARSE_INVALID_CL_HEADER 17
40
41
42 #define NGX_HTTP_OK 200
43
44 #define NGX_HTTP_SPECIAL_RESPONSE 300
45 #define NGX_HTTP_MOVED_PERMANENTLY 301
46 #define NGX_HTTP_MOVED_TEMPORARILY 302
47 #define NGX_HTTP_NOT_MODIFIED 304
48
49 #define NGX_HTTP_BAD_REQUEST 400
50 #define NGX_HTTP_FORBIDDEN 403
51 #define NGX_HTTP_NOT_FOUND 404
52 #define NGX_HTTP_REQUEST_TIME_OUT 408
53 #define NGX_HTTP_REQUEST_URI_TOO_LARGE 414
54
55 #define NGX_HTTP_INTERNAL_SERVER_ERROR 500
56 #define NGX_HTTP_NOT_IMPLEMENTED 501
57 #define NGX_HTTP_BAD_GATEWAY 502
58 #define NGX_HTTP_SERVICE_UNAVAILABLE 503
59 #define NGX_HTTP_GATEWAY_TIME_OUT 504
60
61
62
63 #define NGX_HTTP_STATIC_HANDLER 0
64 #define NGX_HTTP_DIRECTORY_HANDLER 1
65
66
67 typedef struct {
68 ngx_str_t name;
69 int offset;
70 } ngx_http_header_t;
71
72
73 typedef struct {
74 size_t host_name_len;
75 ssize_t content_length_n;
76
77 ngx_table_elt_t *host;
78 ngx_table_elt_t *connection;
79 ngx_table_elt_t *if_modified_since;
80 ngx_table_elt_t *content_length;
81 ngx_table_elt_t *accept_encoding;
82
83 ngx_table_elt_t *user_agent;
84
85 ngx_table_t *headers;
86 } ngx_http_headers_in_t;
87
88
89 typedef struct {
90 ngx_chain_t chain[4];
91 ngx_hunk_t *header_out;
92 ngx_hunk_t *hunk;
93 ngx_hunk_t *file_hunk;
94 ngx_file_t temp_file;
95 ngx_path_t *temp_path;
96 off_t offset;
97 char *header_in_pos;
98 } ngx_http_request_body_t;
99
100
101 typedef struct {
102 int status;
103 ngx_str_t status_line;
104
105 ngx_table_elt_t *server;
106 ngx_table_elt_t *date;
107 ngx_table_elt_t *content_type;
108 ngx_table_elt_t *location;
109 ngx_table_elt_t *last_modified;
110
111 ngx_table_t *headers;
112
113 off_t content_length;
114 char *charset;
115 char *etag;
116 time_t date_time;
117 time_t last_modified_time;
118 } ngx_http_headers_out_t;
119
120
121 typedef struct ngx_http_request_s ngx_http_request_t;
122
123 struct ngx_http_request_s {
124 ngx_connection_t *connection;
125
126 void **ctx;
127 void **main_conf;
128 void **srv_conf;
129 void **loc_conf;
130
131 ngx_file_t file;
132
133 ngx_pool_t *pool;
134 ngx_hunk_t *header_in;
135 ngx_http_request_body_t *request_body;
136
137 ngx_http_headers_in_t headers_in;
138 ngx_http_headers_out_t headers_out;
139
140 int (*handler)(ngx_http_request_t *r);
141
142 time_t lingering_time;
143
144 int method;
145 int http_version;
146 int http_major;
147 int http_minor;
148
149 ngx_str_t request_line;
150 ngx_str_t uri;
151 ngx_str_t args;
152 ngx_str_t exten;
153 ngx_str_t unparsed_uri;
154
155 ngx_http_request_t *main;
156
157 u_int in_addr;
158
159 int port;
160 ngx_str_t port_name;
161
162 int filter;
163
164 char *discarded_buffer;
165
166 ngx_str_t path;
167 int path_err;
168
169 unsigned proxy:1;
170 unsigned cachable:1;
171 unsigned pipeline:1;
172 unsigned keepalive:1;
173 unsigned lingering_close:1;
174
175 unsigned header_read:1;
176 unsigned header_timeout_set:1;
177
178 unsigned logging:1;
179
180 unsigned header_only:1;
181 unsigned unusual_uri:1; /* URI is not started with '/' - "GET http://" */
182 unsigned complex_uri:1; /* URI with "/." or with "//" (WIN32) */
183 unsigned path_not_found:1;
184 #ifdef NGX_EVENT
185 unsigned write_level_event:1;
186 #endif
187
188 int state;
189 char *uri_start;
190 char *uri_end;
191 char *uri_ext;
192 char *args_start;
193 char *request_start;
194 char *request_end;
195 char *header_name_start;
196 char *header_name_end;
197 char *header_start;
198 char *header_end;
199 #ifdef NGX_EVENT
200 int (*state_handler)(ngx_http_request_t *r);
201 #endif
202 };
203
204
205 #endif /* _NGX_HTTP_REQUEST_H_INCLUDED_ */