Mercurial > hg > nginx
comparison src/http/ngx_http_request.c @ 356:2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 16 Jun 2004 15:32:11 +0000 |
parents | 55e496a8ece3 |
children | 0a03c921c81d |
comparison
equal
deleted
inserted
replaced
355:0fb6c53fb135 | 356:2e3cbc1bbe3c |
---|---|
7 | 7 |
8 static void ngx_http_init_request(ngx_event_t *ev); | 8 static void ngx_http_init_request(ngx_event_t *ev); |
9 static void ngx_http_process_request_line(ngx_event_t *rev); | 9 static void ngx_http_process_request_line(ngx_event_t *rev); |
10 static void ngx_http_process_request_headers(ngx_event_t *rev); | 10 static void ngx_http_process_request_headers(ngx_event_t *rev); |
11 static ssize_t ngx_http_read_request_header(ngx_http_request_t *r); | 11 static ssize_t ngx_http_read_request_header(ngx_http_request_t *r); |
12 static int ngx_http_process_request_header(ngx_http_request_t *r); | 12 static ngx_int_t ngx_http_process_request_header(ngx_http_request_t *r); |
13 | 13 |
14 static void ngx_http_set_write_handler(ngx_http_request_t *r); | 14 static void ngx_http_set_write_handler(ngx_http_request_t *r); |
15 | 15 |
16 static void ngx_http_block_read(ngx_event_t *ev); | 16 static void ngx_http_block_read(ngx_event_t *ev); |
17 static void ngx_http_read_discarded_body_event(ngx_event_t *rev); | 17 static void ngx_http_read_discarded_body_event(ngx_event_t *rev); |
18 static int ngx_http_read_discarded_body(ngx_http_request_t *r); | 18 static ngx_int_t ngx_http_read_discarded_body(ngx_http_request_t *r); |
19 | 19 |
20 static void ngx_http_set_keepalive(ngx_http_request_t *r); | 20 static void ngx_http_set_keepalive(ngx_http_request_t *r); |
21 static void ngx_http_keepalive_handler(ngx_event_t *ev); | 21 static void ngx_http_keepalive_handler(ngx_event_t *ev); |
22 static void ngx_http_set_lingering_close(ngx_http_request_t *r); | 22 static void ngx_http_set_lingering_close(ngx_http_request_t *r); |
23 static void ngx_http_lingering_close_handler(ngx_event_t *ev); | 23 static void ngx_http_lingering_close_handler(ngx_event_t *ev); |
845 } | 845 } |
846 | 846 |
847 | 847 |
848 static ngx_int_t ngx_http_process_request_header(ngx_http_request_t *r) | 848 static ngx_int_t ngx_http_process_request_header(ngx_http_request_t *r) |
849 { | 849 { |
850 u_char *ua; | |
850 size_t len; | 851 size_t len; |
851 ngx_uint_t i; | 852 ngx_uint_t i; |
852 ngx_http_server_name_t *name; | 853 ngx_http_server_name_t *name; |
853 ngx_http_core_srv_conf_t *cscf; | 854 ngx_http_core_srv_conf_t *cscf; |
854 ngx_http_core_loc_conf_t *clcf; | 855 ngx_http_core_loc_conf_t *clcf; |
929 | 930 |
930 if (r->headers_in.keep_alive) { | 931 if (r->headers_in.keep_alive) { |
931 r->headers_in.keep_alive_n = | 932 r->headers_in.keep_alive_n = |
932 ngx_atoi(r->headers_in.keep_alive->value.data, | 933 ngx_atoi(r->headers_in.keep_alive->value.data, |
933 r->headers_in.keep_alive->value.len); | 934 r->headers_in.keep_alive->value.len); |
935 } | |
936 } | |
937 } | |
938 | |
939 if (r->headers_in.user_agent) { | |
940 | |
941 /* | |
942 * check some widespread browsers while the headers are still | |
943 * in CPU cache | |
944 */ | |
945 | |
946 ua = ngx_strstr(r->headers_in.user_agent->value.data, "MSIE"); | |
947 if (ua | |
948 && ua + 8 < r->headers_in.user_agent->value.data | |
949 + r->headers_in.user_agent->value.len) | |
950 { | |
951 r->headers_in.msie = 1; | |
952 if (ua[4] == ' ' && ua[5] == '4' && ua[6] == '.') { | |
953 r->headers_in.msie4 = 1; | |
934 } | 954 } |
935 } | 955 } |
936 } | 956 } |
937 | 957 |
938 return NGX_OK; | 958 return NGX_OK; |
1114 } | 1134 } |
1115 } | 1135 } |
1116 } | 1136 } |
1117 | 1137 |
1118 | 1138 |
1119 int ngx_http_discard_body(ngx_http_request_t *r) | 1139 ngx_int_t ngx_http_discard_body(ngx_http_request_t *r) |
1120 { | 1140 { |
1121 ssize_t size; | 1141 ssize_t size; |
1122 ngx_event_t *rev; | 1142 ngx_event_t *rev; |
1123 | 1143 |
1124 rev = r->connection->read; | 1144 rev = r->connection->read; |
1180 ngx_http_close_connection(c); | 1200 ngx_http_close_connection(c); |
1181 } | 1201 } |
1182 } | 1202 } |
1183 | 1203 |
1184 | 1204 |
1185 static int ngx_http_read_discarded_body(ngx_http_request_t *r) | 1205 static ngx_int_t ngx_http_read_discarded_body(ngx_http_request_t *r) |
1186 { | 1206 { |
1187 ssize_t size, n; | 1207 ssize_t size, n; |
1188 ngx_http_core_loc_conf_t *clcf; | 1208 ngx_http_core_loc_conf_t *clcf; |
1189 | 1209 |
1190 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, | 1210 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
1521 | 1541 |
1522 return; | 1542 return; |
1523 } | 1543 } |
1524 | 1544 |
1525 | 1545 |
1526 int ngx_http_send_last(ngx_http_request_t *r) | 1546 ngx_int_t ngx_http_send_last(ngx_http_request_t *r) |
1527 { | 1547 { |
1528 ngx_buf_t *b; | 1548 ngx_buf_t *b; |
1529 ngx_chain_t out; | 1549 ngx_chain_t out; |
1530 | 1550 |
1531 if (!(b = ngx_calloc_buf(r->pool))) { | 1551 if (!(b = ngx_calloc_buf(r->pool))) { |