diff src/http/modules/ngx_http_index_handler.c @ 97:70d2345a903f

nginx-0.0.1-2003-05-29-17:02:09 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 29 May 2003 13:02:09 +0000
parents a23d010f356d
children c9b243802a17
line wrap: on
line diff
--- a/src/http/modules/ngx_http_index_handler.c
+++ b/src/http/modules/ngx_http_index_handler.c
@@ -59,7 +59,7 @@ int ngx_http_index_handler(ngx_http_requ
 {
     int                        i, rc, test_dir;
     char                      *name, *file;
-    ngx_str_t                  loc, *index;
+    ngx_str_t                  redirect, *index;
     ngx_err_t                  err;
     ngx_fd_t                   fd;
     ngx_http_index_conf_t     *icf;
@@ -74,14 +74,14 @@ int ngx_http_index_handler(ngx_http_requ
                              + icf->max_index_len),
                   NGX_HTTP_INTERNAL_SERVER_ERROR);
 
-    loc.data = ngx_cpystrn(r->path.data, clcf->doc_root.data,
-                           clcf->doc_root.len + 1);
-    file = ngx_cpystrn(loc.data, r->uri.data, r->uri.len + 1);
+    redirect.data = ngx_cpymem(r->path.data, clcf->doc_root.data,
+                               clcf->doc_root.len);
+    file = ngx_cpystrn(redirect.data, r->uri.data, r->uri.len + 1);
     r->path.len = file - r->path.data;
 
     test_dir = 1;
 
-    index = (ngx_str_t *) icf->indices.elts;
+    index = icf->indices.elts;
     for (i = 0; i < icf->indices.nelts; i++) {
 
         if (index[i].data[0] != '/') {
@@ -136,18 +136,15 @@ ngx_log_error(NGX_LOG_DEBUG, r->connecti
 
         if (index[i].data[0] == '/') {
             r->file.name.len = index[i].len;
-            loc.len = index[i].len;
-            loc.data = index[i].data;
+            redirect.len = index[i].len;
+            redirect.data = index[i].data;
 
         } else {
-            loc.len = r->uri.len + index[i].len;
-            r->file.name.len = clcf->doc_root.len + r->uri.len
-                               + index[i].len;
+            redirect.len = r->uri.len + index[i].len;
+            r->file.name.len = clcf->doc_root.len + r->uri.len + index[i].len;
         }
 
-/* STUB */ r->exten.len = 4; r->exten.data = "html";
-
-        return ngx_http_internal_redirect(r, loc);
+        return ngx_http_internal_redirect(r, &redirect, NULL);
     }
 
     return NGX_DECLINED;
@@ -177,7 +174,6 @@ ngx_log_debug(r->connection->log, "IS_DI
         }
 
         ngx_log_error(NGX_LOG_CRIT, r->connection->log, r->path_err,
-                      "ngx_http_index_test_dir: "
                       ngx_file_type_n " %s failed", r->path.data);
 
         return NGX_HTTP_INTERNAL_SERVER_ERROR;
@@ -263,7 +259,7 @@ static char *ngx_http_index_merge_conf(n
 }
 
 
-/* TODO: check duplicate indices */
+/* TODO: warn about duplicate indices */
 
 static char *ngx_http_index_set_index(ngx_conf_t *cf, ngx_command_t *cmd,
                                       void *conf)
@@ -283,7 +279,9 @@ static char *ngx_http_index_set_index(ng
 
     for (i = 1; i < cf->args->nelts; i++) {
         if (value[i].len == 0) {
-            return "is invalid";
+            ngx_snprintf(ngx_conf_errstr, sizeof(ngx_conf_errstr) - 1,
+                         "index \"%s\" is invalid", value[1].data);
+            return ngx_conf_errstr;
         }
 
         ngx_test_null(index, ngx_push_array(&icf->indices), NGX_CONF_ERROR);
@@ -295,5 +293,5 @@ static char *ngx_http_index_set_index(ng
         }
     }
 
-    return NULL;
+    return NGX_CONF_OK;
 }