Changeset 606 for cherokee/trunk/cherokee/handler_nn.c
- Timestamp:
- 01/14/07 11:40:37 (2 years ago)
- Files:
-
- cherokee/trunk/cherokee/handler_nn.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/cherokee/handler_nn.c
r597 r606 31 31 #include <dirent.h> 32 32 33 #include "thread.h" 33 34 #include "connection.h" 34 35 #include "connection-protected.h" … … 57 58 58 59 dir = opendir(directory); 59 if (dir == NULL) goto go_out; 60 if (dir == NULL) 61 goto go_out; 60 62 61 63 while ((entry = readdir (dir)) != NULL) … … 83 85 84 86 85 ret_t 86 get_nearest (cherokee_buffer_t *local_dir, 87 cherokee_buffer_t *request, 88 cherokee_buffer_t *output) 87 static ret_t 88 get_nearest_name ( 89 cherokee_connection_t *conn, 90 cherokee_buffer_t *local_dir, 91 cherokee_buffer_t *request, 92 cherokee_buffer_t *output) 89 93 { 90 94 char *rest; 91 95 ret_t ret = ret_ok; 92 cherokee_buffer_t req = CHEROKEE_BUF_INIT; /* Request w/o last word */ 96 cherokee_thread_t *thread = CONN_THREAD(conn); 97 cherokee_buffer_t *req = THREAD_TMP_BUF1(thread);/* Request w/o last word */ 93 98 94 99 /* Build the local request path … … 100 105 rest++; 101 106 102 cherokee_buffer_add_buffer (&req, local_dir); 103 cherokee_buffer_add (&req, request->buf, rest - request->buf); 107 cherokee_buffer_clean (req); 108 cherokee_buffer_add_buffer (req, local_dir); 109 cherokee_buffer_add (req, request->buf, rest - request->buf); 104 110 105 111 /* Copy the new filename to the output buffer 106 112 */ 107 ret = get_nearest_from_directory (req.buf, rest, output); 108 cherokee_buffer_mrproper (&req); 113 ret = get_nearest_from_directory (req->buf, rest, output); 109 114 110 115 if (unlikely (ret != ret_ok)) { … … 125 130 struct stat info; 126 131 int stat_ret; 127 cherokee_connection_t *conn; 128 129 conn = CONN(cnt); 132 cherokee_connection_t *conn = CONN(cnt); 130 133 131 134 cherokee_buffer_add (&conn->local_directory, conn->request.buf, conn->request.len); … … 139 142 } 140 143 141 /* It doesn't exi t, lets redirect it..144 /* It doesn't exists, let's redirect it.. 142 145 */ 143 146 cherokee_buffer_clean (&conn->redirect); 144 147 145 ret = get_nearest (&conn->local_directory, &conn->request, &conn->redirect);148 ret = get_nearest_name (conn, &conn->local_directory, &conn->request, &conn->redirect); 146 149 if (unlikely (ret != ret_ok)) { 147 CONN(cnt)->error_code = http_not_found;150 conn->error_code = http_not_found; 148 151 return ret_error; 149 152 }