Mercurial > hg > nginx-quic
comparison src/http/modules/ngx_http_index_handler.c @ 26:53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 15 Dec 2002 06:25:09 +0000 |
parents | 77c7629a2627 |
children | 6a0b3d6e9c13 |
comparison
equal
deleted
inserted
replaced
25:a8b156554dfe | 26:53cb81681040 |
---|---|
14 static void *ngx_http_index_merge_conf(ngx_pool_t *p, | 14 static void *ngx_http_index_merge_conf(ngx_pool_t *p, |
15 void *parent, void *child); | 15 void *parent, void *child); |
16 static char *ngx_http_index_set_index(ngx_pool_t *p, void *conf, | 16 static char *ngx_http_index_set_index(ngx_pool_t *p, void *conf, |
17 ngx_str_t *value); | 17 ngx_str_t *value); |
18 | 18 |
19 static ngx_command_t ngx_http_index_commands[]; | 19 |
20 static ngx_command_t ngx_http_index_commands[] = { | |
21 | |
22 {"index", ngx_http_index_set_index, NULL, | |
23 NGX_HTTP_LOC_CONF, NGX_CONF_ITERATE, | |
24 "set index files"}, | |
25 | |
26 {NULL} | |
27 | |
28 }; | |
20 | 29 |
21 | 30 |
22 ngx_http_module_t ngx_http_index_module = { | 31 ngx_http_module_t ngx_http_index_module = { |
23 NGX_HTTP_MODULE, | 32 NGX_HTTP_MODULE, |
24 | 33 |
28 | 37 |
29 NULL, /* init module */ | 38 NULL, /* init module */ |
30 NULL, /* translate handler */ | 39 NULL, /* translate handler */ |
31 | 40 |
32 NULL, /* init output body filter */ | 41 NULL, /* init output body filter */ |
33 }; | |
34 | |
35 | |
36 static ngx_command_t ngx_http_index_commands[] = { | |
37 | |
38 {"index", ngx_http_index_set_index, NULL, | |
39 NGX_HTTP_LOC_CONF, NGX_CONF_ITERATE, | |
40 "set index files"}, | |
41 | |
42 {NULL} | |
43 | |
44 }; | 42 }; |
45 | 43 |
46 | 44 |
47 int ngx_http_index_handler(ngx_http_request_t *r) | 45 int ngx_http_index_handler(ngx_http_request_t *r) |
48 { | 46 { |
69 index = (ngx_str_t *) cf->indices->elts; | 67 index = (ngx_str_t *) cf->indices->elts; |
70 for (i = 0; i < cf->indices->nelts; i++) { | 68 for (i = 0; i < cf->indices->nelts; i++) { |
71 ngx_memcpy(file, index[i].data, index[i].len + 1); | 69 ngx_memcpy(file, index[i].data, index[i].len + 1); |
72 | 70 |
73 fd = ngx_open_file(name, NGX_FILE_RDONLY); | 71 fd = ngx_open_file(name, NGX_FILE_RDONLY); |
74 if (fd == -1) { | 72 if (fd == NGX_INVALID_FILE) { |
75 err = ngx_errno; | 73 err = ngx_errno; |
76 if (err == NGX_ENOENT) | 74 if (err == NGX_ENOENT) |
77 continue; | 75 continue; |
76 #if (WIN32) | |
77 if (err == ERROR_PATH_NOT_FOUND) | |
78 continue; | |
79 #endif | |
78 | 80 |
79 ngx_log_error(NGX_LOG_ERR, r->connection->log, err, | 81 ngx_log_error(NGX_LOG_ERR, r->connection->log, err, |
80 ngx_open_file_n " %s failed", name); | 82 ngx_open_file_n " %s failed", name); |
81 | 83 |
82 return NGX_HTTP_INTERNAL_SERVER_ERROR; | 84 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
83 } | 85 } |
84 | 86 |
85 r->filename.len = r->server->doc_root_len + r->uri.len + index[i].len; | 87 r->file.name.len = r->server->doc_root_len + r->uri.len + index[i].len; |
86 r->filename.data = name; | 88 r->file.name.data = name; |
87 r->fd = fd; | 89 r->file.fd = fd; |
88 | 90 |
89 loc.len = r->uri.len + index[i].len; | 91 loc.len = r->uri.len + index[i].len; |
90 return ngx_http_internal_redirect(r, loc); | 92 return ngx_http_internal_redirect(r, loc); |
91 } | 93 } |
92 | 94 |