comparison src/http/ngx_http_request_body.c @ 296:bfe099e3f5b4

nginx-0.0.3-2004-03-26-19:13:01 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 26 Mar 2004 16:13:01 +0000
parents 5cfd65b8b0a7
children ee394e997c77
comparison
equal deleted inserted replaced
295:99b349386504 296:bfe099e3f5b4
17 ngx_chain_t *cl; 17 ngx_chain_t *cl;
18 18
19 size = r->header_in->last - r->header_in->pos; 19 size = r->header_in->last - r->header_in->pos;
20 20
21 if (size) { 21 if (size) {
22
23 /* there is the pre-read part of the request body */
24
22 ngx_test_null(h, ngx_calloc_hunk(r->pool), NGX_ERROR); 25 ngx_test_null(h, ngx_calloc_hunk(r->pool), NGX_ERROR);
23 26
24 h->type = NGX_HUNK_IN_MEMORY|NGX_HUNK_TEMP; 27 h->type = NGX_HUNK_IN_MEMORY|NGX_HUNK_TEMP;
25 h->start = h->pos = r->header_in->pos; 28 h->start = h->pos = r->header_in->pos;
26 h->end = h->last = r->header_in->last; 29 h->end = h->last = r->header_in->last;
27 30
28 ngx_alloc_link_and_set_hunk(r->request_hunks, h, r->pool, NGX_ERROR); 31 ngx_alloc_link_and_set_hunk(r->request_hunks, h, r->pool, NGX_ERROR);
29 32
30 if (size >= r->headers_in.content_length_n) { 33 if (size >= r->headers_in.content_length_n) {
34
35 /* the whole request body was pre-read */
36
31 r->header_in->pos += r->headers_in.content_length_n; 37 r->header_in->pos += r->headers_in.content_length_n;
32
33 return NGX_OK; 38 return NGX_OK;
34 } 39 }
35 40
36 r->header_in->pos = r->header_in->last; 41 r->header_in->pos = r->header_in->last;
37 } 42 }
38 43
39 r->request_body_len = r->headers_in.content_length_n - size; 44
40 45 r->remaining_body_len = r->headers_in.content_length_n - size;
41 if (r->request_body_len < request_buffer_size + (request_buffer_size >> 2)) 46
47 if (r->remaining_body_len
48 < request_buffer_size + (request_buffer_size >> 2))
42 { 49 {
43 size = r->request_body_len; 50 size = r->remaining_body_len;
44 51
45 } else { 52 } else {
46 size = request_buffer_size; 53 size = request_buffer_size;
47 } 54 }
48 55
114 r->request_body_hunk->last = r->request_body_hunk->start; 121 r->request_body_hunk->last = r->request_body_hunk->start;
115 } 122 }
116 123
117 size = r->request_body_hunk->end - r->request_body_hunk->last; 124 size = r->request_body_hunk->end - r->request_body_hunk->last;
118 125
119 if (size > r->request_body_len) { 126 if (size > r->remaining_body_len) {
120 size = r->request_body_len; 127 size = r->remaining_body_len;
121 } 128 }
122 129
123 n = ngx_recv(c, r->request_body_hunk->last, size); 130 n = ngx_recv(c, r->request_body_hunk->last, size);
124 131
125 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, 132 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
145 r->closed = 1; 152 r->closed = 1;
146 return NGX_HTTP_BAD_REQUEST; 153 return NGX_HTTP_BAD_REQUEST;
147 } 154 }
148 155
149 r->request_body_hunk->last += n; 156 r->request_body_hunk->last += n;
150 r->request_body_len -= n; 157 r->remaining_body_len -= n;
151 158
152 if (r->request_body_len == 0) { 159 if (r->remaining_body_len == 0) {
153 break; 160 break;
154 } 161 }
155 162
156 if (r->request_body_hunk->last < r->request_body_hunk->end) { 163 if (r->request_body_hunk->last < r->request_body_hunk->end) {
157 break; 164 break;
158 } 165 }
159 } 166 }
160 167
161 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, 168 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
162 "http client request body left " SIZE_T_FMT, 169 "http client request body left " SIZE_T_FMT,
163 r->request_body_len); 170 r->remaining_body_len);
164 171
165 if (r->request_body_len) { 172 if (r->remaining_body_len) {
166 return NGX_AGAIN; 173 return NGX_AGAIN;
167 } 174 }
168 175
169 if (r->temp_file->file.fd != NGX_INVALID_FILE) { 176 if (r->temp_file->file.fd != NGX_INVALID_FILE) {
170 177