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))) {