60 |
} |
} |
61 |
memset(req, 0, offsetof(request, buffer) + 1); |
memset(req, 0, offsetof(request, buffer) + 1); |
62 |
req->data_fd = -1; |
req->data_fd = -1; |
63 |
req->post_data_fd = -1; |
req->post_data_fd.fds[0] = req->post_data_fd.fds[1] = -1; |
64 |
|
|
65 |
return req; |
return req; |
66 |
} |
} |
328 |
if (req->data_fd != -1) |
if (req->data_fd != -1) |
329 |
close(req->data_fd); |
close(req->data_fd); |
330 |
|
|
331 |
if (req->post_data_fd != -1) |
close_tmp_fd( &req->post_data_fd); |
|
close(req->post_data_fd); |
|
332 |
|
|
333 |
if (req->response_status >= 400) |
if (req->response_status >= 400) |
334 |
params->status.errors++; |
params->status.errors++; |
761 |
} |
} |
762 |
|
|
763 |
if (req->method == M_POST) { |
if (req->method == M_POST) { |
764 |
req->post_data_fd = create_temporary_file(1, NULL, 0); |
req->post_data_fd = create_temporary_file(1, boa_atoi(req->content_length)); |
765 |
if (req->post_data_fd == -1) |
if (req->post_data_fd.fds[0] == -1) |
766 |
return(0); |
return(0); |
767 |
|
|
768 |
if (fcntl(req->post_data_fd, F_SETFD, 1) == -1) { |
if (req->post_data_fd.pipe==0) { |
769 |
WARN("unable to set close-on-exec for req->post_data_fd!"); |
if (set_cloexec_fd( req->post_data_fd.fds[0]) == -1) { |
770 |
close(req->post_data_fd); |
WARN("unable to set close-on-exec for req->post_data_fd!"); |
771 |
req->post_data_fd = -1; |
close_tmp_fd(&req->post_data_fd); |
772 |
return(0); |
return(0); |
773 |
|
} |
774 |
} |
} |
775 |
|
|
776 |
return(1); /* success */ |
return(1); /* success */ |
786 |
|
|
787 |
/* Parses HTTP/1.1 range values. |
/* Parses HTTP/1.1 range values. |
788 |
*/ |
*/ |
789 |
static int parse_range( const char* value, off64_t *val1, off64_t *val2) |
static int parse_range( const char* value, large_int *val1, large_int *val2) |
790 |
{ |
{ |
791 |
int len; |
int len; |
792 |
char *p; |
char *p; |
848 |
inline |
inline |
849 |
static void init_range_stuff( request* req, char* value) |
static void init_range_stuff( request* req, char* value) |
850 |
{ |
{ |
851 |
off64_t p1, p2; |
large_int p1, p2; |
852 |
if (parse_range( value, &p1, &p2) == 0) { |
if (parse_range( value, &p1, &p2) == 0) { |
853 |
req->range_start = p1; |
req->range_start = p1; |
854 |
req->range_stop = p2; |
req->range_stop = p2; |