Changeset 606
- Timestamp:
- 01/14/07 11:40:37 (2 years ago)
- Files:
-
- cherokee/trunk/ChangeLog (modified) (1 diff)
- cherokee/trunk/cherokee/admin_client.c (modified) (9 diffs)
- cherokee/trunk/cherokee/buffer.c (modified) (7 diffs)
- cherokee/trunk/cherokee/buffer.h (modified) (1 diff)
- cherokee/trunk/cherokee/downloader.c (modified) (2 diffs)
- cherokee/trunk/cherokee/downloader.h (modified) (1 diff)
- cherokee/trunk/cherokee/handler_common.c (modified) (3 diffs)
- cherokee/trunk/cherokee/handler_nn.c (modified) (6 diffs)
- cherokee/trunk/cherokee/handler_proxy.c (modified) (2 diffs)
- cherokee/trunk/cherokee/handler_proxy.h (modified) (1 diff)
- cherokee/trunk/cherokee/nonce.c (modified) (1 diff)
- cherokee/trunk/cherokee/request.c (modified) (2 diffs)
- cherokee/trunk/cherokee/request.h (modified) (2 diffs)
- cherokee/trunk/cherokee/validator_htpasswd.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cherokee/trunk/ChangeLog
r603 r606 1 2007-01-14 A.D.F <adefacc@tin.it> 2 3 * cherokee/buffer.h: 4 - changed prototypes of: 5 - cherokee_buffer_encode_base64(); 6 - cherokee_buffer_encode_sha1_base64(); 7 - cherokee_buffer_encode_hex(); 8 to add a second destination buffer in order 9 to avoid unneeded allocations / reallocations. 10 11 * cherokee/buffer.c: 12 - added a second parameter to: 13 - cherokee_buffer_encode_base64(); 14 - cherokee_buffer_encode_sha1_base64(); 15 - cherokee_buffer_encode_hex(). 16 17 * cherokee/downloader.h: 18 - changed prototype of cherokee_downloader_step() 19 in order to pass two temporary buffers; 20 21 * cherokee/downloader.c: 22 - changed cherokee_downloader_step() in order 23 to use two temporary buffers to avoid 24 allocations / reallocations when handling buffers 25 in called functions 26 (i.e. cherokee_request_header_build_string()); 27 28 * cherokee/handler_proxy.h: 29 - added new macros; 30 31 * cherokee/handler_proxy.c: 32 - passed two temporary buffers to cherokee_downloader_step(); 33 34 * cherokee/request.h: 35 - changed prototype of cherokee_request_header_build_string(); 36 37 * cherokee/request.c: 38 - cherokee_request_header_build_string(). 39 now it uses two permanent temporary buffers in order 40 to avoid reallocations. 41 42 * cherokee/admin_client.c: 43 - sparse fixes to improve readability and performances 44 (new two temporary buffers for cherokee_downloader_step()); 45 46 * cherokee/handler_common.c: 47 - use THREAD_TMP_BUF[12]() to avoid reallocations; 48 1 49 2007-01-13 Alvaro Lopez Ortega <alvaro@alobbs.com> 2 50 cherokee/trunk/cherokee/admin_client.c
r597 r606 35 35 36 36 typedef enum { 37 phase_init,38 phase_stepping,39 phase_finished40 } phase_t;37 admin_phase_init, 38 admin_phase_stepping, 39 admin_phase_finished 40 } admin_phase_t; 41 41 42 42 43 43 struct cherokee_admin_client { 44 cherokee_post_t *post; 44 45 cherokee_buffer_t *url_ref; 45 46 cherokee_buffer_t request; 46 47 cherokee_buffer_t reply; 47 48 phase_t phase; 48 cherokee_buffer_t tmp1; 49 cherokee_buffer_t tmp2; 50 51 admin_phase_t phase; 49 52 cherokee_fdpoll_t *poll_ref; 50 53 cherokee_downloader_t downloader; … … 62 65 /* Init 63 66 */ 64 n->phase = phase_init;67 n->phase = admin_phase_init; 65 68 66 69 n->poll_ref = NULL; 67 70 n->url_ref = NULL; 71 n->post = NULL; 68 72 69 73 cherokee_downloader_init (&n->downloader); 70 74 cherokee_buffer_init (&n->request); 71 75 cherokee_buffer_init (&n->reply); 76 cherokee_buffer_init (&n->tmp1); 77 cherokee_buffer_init (&n->tmp2); 78 79 cherokee_buffer_ensure_size(&n->tmp1, 512); 80 cherokee_buffer_ensure_size(&n->tmp2, 512); 72 81 73 82 /* Return the object … … 83 92 cherokee_buffer_mrproper (&admin->request); 84 93 cherokee_buffer_mrproper (&admin->reply); 94 cherokee_buffer_mrproper (&admin->tmp1); 95 cherokee_buffer_mrproper (&admin->tmp2); 85 96 86 97 cherokee_downloader_mrproper (&admin->downloader); … … 96 107 cherokee_admin_client_t *admin = _param; 97 108 98 admin->phase = phase_finished;109 admin->phase = admin_phase_finished; 99 110 return ret_ok; 100 111 } … … 107 118 cherokee_downloader_t *downloader = &admin->downloader; 108 119 109 admin->phase = phase_init;120 admin->phase = admin_phase_init; 110 121 111 122 admin->poll_ref = poll; … … 160 171 cherokee_buffer_clean (&admin->request); 161 172 cherokee_buffer_clean (&admin->reply); 162 163 admin->phase = phase_init; 173 cherokee_buffer_clean (&admin->tmp1); 174 cherokee_buffer_clean (&admin->tmp2); 175 176 admin->phase = admin_phase_init; 164 177 return ret_ok; 165 178 } … … 174 187 /* Has it finished? 175 188 */ 176 if (admin->phase == phase_finished)189 if (admin->phase == admin_phase_finished) 177 190 return ret_ok; 178 191 179 192 /* Sanity check 180 193 */ 181 if (admin->phase != phase_stepping)194 if (admin->phase != admin_phase_stepping) 182 195 return ret_error; 183 196 184 197 /* It's stepping 185 198 */ 186 ret = cherokee_downloader_step (downloader );199 ret = cherokee_downloader_step (downloader, &admin->tmp1, &admin->tmp2); 187 200 switch (ret) { 188 201 case ret_eof: … … 210 223 cherokee_downloader_reuse (downloader); 211 224 cherokee_downloader_set_url (downloader, admin->url_ref); 225 /* Fixme 212 226 cherokee_downloader_post_set (downloader, &admin->request); 213 214 admin->phase = phase_stepping; 227 */ 228 cherokee_downloader_post_set (downloader, &admin->post); 229 230 admin->phase = admin_phase_stepping; 215 231 } 216 232 … … 237 253 238 254 switch (admin->phase) { 239 case phase_init:255 case admin_phase_init: 240 256 conf_request_func (admin, argument); 241 257 return ret_eagain; 242 case phase_stepping:258 case admin_phase_stepping: 243 259 ret = cherokee_admin_client_internal_step (admin); 244 260 return ret; 245 case phase_finished:261 case admin_phase_finished: 246 262 return ret_ok; 247 263 default: cherokee/trunk/cherokee/buffer.c
r602 r606 1240 1240 1241 1241 1242 ret_t 1243 cherokee_buffer_encode_base64 (cherokee_buffer_t *buf) 1242 /* Encode base64 from source (buf) to destination (encoded). 1243 * NOTE: resulting (encoded) content is always longer than source (buf). 1244 * Source (buf) is not touched (rewritten or reallocated). 1245 */ 1246 ret_t 1247 cherokee_buffer_encode_base64 (cherokee_buffer_t *buf, cherokee_buffer_t *encoded) 1244 1248 { 1245 1249 cuchar_t *in; … … 1248 1252 int i, j; 1249 1253 cuint_t inlen = buf->len; 1250 cherokee_buffer_t new_buf = CHEROKEE_BUF_INIT; 1251 1254 1252 1255 static const char base64tab[]= 1253 1256 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; … … 1255 1258 /* Get memory 1256 1259 */ 1257 ret = cherokee_buffer_ensure_size ( &new_buf, (buf->len+4)*4/3 + 1);1260 ret = cherokee_buffer_ensure_size (encoded, (buf->len+4)*4/3 + 1); 1258 1261 if (unlikely (ret != ret_ok)) 1259 1262 return ret; 1260 1263 1261 /* Encode 1264 /* Cleanup destination buffer 1265 */ 1266 cherokee_buffer_clean (encoded); 1267 1268 /* Encode source to destination 1262 1269 */ 1263 1270 in = (cuchar_t *) buf->buf; 1264 out = (cuchar_t *) new_buf.buf;1271 out = (cuchar_t *) encoded->buf; 1265 1272 1266 1273 for (i=0, j=0; i < inlen; i += 3) { … … 1287 1294 1288 1295 out[j] = '\0'; 1289 new_buf.len = j; 1290 1291 /* Set the encoded string 1292 */ 1293 free (buf->buf); 1294 1295 buf->buf = new_buf.buf; 1296 buf->len = new_buf.len; 1297 buf->size = new_buf.size; 1296 encoded->len = j; 1298 1297 1299 1298 return ret_ok; … … 1358 1357 1359 1358 #ifndef CHEROKEE_EMBEDDED 1359 1360 /* Encode sha1, source buffer (buf) is not touched, 1361 * whereas destination buffer (encoded) is overwritten 1362 * but possibly not reallocated. 1363 */ 1360 1364 ret_t 1361 1365 cherokee_buffer_encode_sha1 (cherokee_buffer_t *buf, cherokee_buffer_t *encoded) … … 1376 1380 1377 1381 1378 ret_t 1379 cherokee_buffer_encode_sha1_base64 (cherokee_buffer_t *buf) 1380 { 1381 cuint_t ntmp; 1382 char *ctmp; 1383 cherokee_buffer_t encoded = CHEROKEE_BUF_INIT; 1384 1385 cherokee_buffer_ensure_size (&encoded, (SHA1_DIGEST_SIZE * 2) + 1); 1386 1387 cherokee_buffer_encode_sha1 (buf, &encoded); 1388 cherokee_buffer_encode_base64 (&encoded); 1389 1390 /* Swap buffers 1391 */ 1392 ctmp = buf->buf; 1393 buf->buf = encoded.buf; 1394 encoded.buf = ctmp; 1395 1396 ntmp = buf->len; 1397 buf->len = encoded.len; 1398 encoded.len = ntmp; 1399 1400 ntmp = buf->size; 1401 buf->size = encoded.size; 1402 encoded.size = ntmp; 1403 1404 /* Clean and return 1405 */ 1406 cherokee_buffer_mrproper (&encoded); 1382 /* Encode sha1 in base64, both source (buf) and destination (encoded) 1383 * buffers are overwritten, but possibly not reallocated. 1384 */ 1385 ret_t 1386 cherokee_buffer_encode_sha1_base64 (cherokee_buffer_t *buf, cherokee_buffer_t *encoded) 1387 { 1388 /* Prepare destination buffer 1389 */ 1390 cherokee_buffer_ensure_size (encoded, (SHA1_DIGEST_SIZE * 2) + 1); 1391 cherokee_buffer_clean (encoded); 1392 1393 /* Encode sha1 + base64 1394 */ 1395 cherokee_buffer_encode_sha1 (buf, encoded); 1396 cherokee_buffer_encode_base64 (encoded, buf); 1397 1398 /* Copy result to destination buffer 1399 */ 1400 cherokee_buffer_clean (encoded); 1401 cherokee_buffer_add_buffer (encoded, buf); 1407 1402 1408 1403 return ret_ok; … … 1411 1406 1412 1407 1413 ret_t 1414 cherokee_buffer_encode_hex (cherokee_buffer_t *buf) 1415 { 1416 unsigned int i; 1417 unsigned char j; 1418 char *new_buf; 1419 1420 new_buf = (char *) malloc((buf->len * 2)+1);1421 if (unlikely (new_buf == NULL)) {1422 return ret_error;1423 }1424 1425 for (i = 0; i < buf->len; i++) { 1426 j = (buf->buf[i] >> 4) & 0xf;1427 if (j <= 9)1428 new_buf[i*2] = (j + '0');1429 else1430 new_buf[i*2] = (j + 'a' - 10); 1431 1432 j = buf->buf[i] & 0xf;1433 if (j <= 9)1434 new_buf[i*2+1] = (j + '0');1435 else 1436 new_buf[i*2+1] = (j + 'a' - 10);1437 }1438 1439 new_buf[buf->len*2] = '\0'; 1440 1441 free (buf->buf);1442 1443 buf->len *= 2; 1444 buf->size = buf->len + 1;1445 buf->buf = new_buf;1408 /* Encode in hexadecimal characters, source buffer (buf) is not touched, 1409 * whereas destination buffer (encoded) is overwritten 1410 * but possibly not reallocated. 1411 */ 1412 ret_t 1413 cherokee_buffer_encode_hex (cherokee_buffer_t *buf, cherokee_buffer_t *encoded) 1414 { 1415 cuchar_t *in; 1416 cuchar_t *out; 1417 cuint_t j; 1418 cuint_t i; 1419 cuint_t inlen = buf->len; 1420 1421 /* Prepare destination buffer 1422 */ 1423 cherokee_buffer_ensure_size (encoded, (inlen * 2 + 1)); 1424 cherokee_buffer_clean (encoded); 1425 1426 /* Encode source to destination 1427 */ 1428 in = (cuchar_t *) buf->buf; 1429 out = (cuchar_t *) encoded->buf; 1430 1431 for (i = 0; i != inlen; ++i) { 1432 j = ( (*in >> 4) & 0xf ); 1433 *out++ = (cuchar_t) TO_HEX(j); 1434 1435 j = (*in++ & 0xf); 1436 *out++ = (cuchar_t) TO_HEX(j); 1437 } 1438 1439 *out = '\0'; 1440 encoded->len = (int) (inlen * 2); 1446 1441 1447 1442 return ret_ok; cherokee/trunk/cherokee/buffer.h
r602 r606 108 108 109 109 crc_t cherokee_buffer_crc32 (cherokee_buffer_t *buf); 110 ret_t cherokee_buffer_encode_base64 (cherokee_buffer_t *buf );110 ret_t cherokee_buffer_encode_base64 (cherokee_buffer_t *buf, cherokee_buffer_t *encoded); 111 111 ret_t cherokee_buffer_decode_base64 (cherokee_buffer_t *buf); 112 112 ret_t cherokee_buffer_encode_md5 (cherokee_buffer_t *buf, cherokee_buffer_t *encoded); 113 113 ret_t cherokee_buffer_encode_md5_digest (cherokee_buffer_t *buf); 114 114 ret_t cherokee_buffer_encode_sha1 (cherokee_buffer_t *buf, cherokee_buffer_t *encoded); 115 ret_t cherokee_buffer_encode_sha1_base64 (cherokee_buffer_t *buf );116 ret_t cherokee_buffer_encode_hex (cherokee_buffer_t *buf );115 ret_t cherokee_buffer_encode_sha1_base64 (cherokee_buffer_t *buf, cherokee_buffer_t *encoded); 116 ret_t cherokee_buffer_encode_hex (cherokee_buffer_t *buf, cherokee_buffer_t *encoded); 117 117 ret_t cherokee_buffer_decode_hex (cherokee_buffer_t *buf); 118 118 ret_t cherokee_buffer_unescape_uri (cherokee_buffer_t *buf); cherokee/trunk/cherokee/downloader.c
r597 r606 380 380 381 381 ret_t 382 cherokee_downloader_step (cherokee_downloader_t *downloader )382 cherokee_downloader_step (cherokee_downloader_t *downloader, cherokee_buffer_t *tmp1, cherokee_buffer_t *tmp2) 383 383 { 384 384 ret_t ret; … … 399 399 /* Build the request header 400 400 */ 401 ret = cherokee_request_header_build_string (req, &downloader->request_header); 402 if (unlikely(ret < ret_ok)) return ret; 401 ret = cherokee_request_header_build_string (req, &downloader->request_header, tmp1, tmp2); 402 if (unlikely(ret < ret_ok)) 403 return ret; 403 404 404 405 /* Deal with the connection cherokee/trunk/cherokee/downloader.h
r597 r606 61 61 ret_t cherokee_downloader_post_reset (cherokee_downloader_t *downloader); 62 62 63 ret_t cherokee_downloader_step (cherokee_downloader_t *downloader );63 ret_t cherokee_downloader_step (cherokee_downloader_t *downloader, cherokee_buffer_t *tmp1, cherokee_buffer_t *tmp2); 64 64 ret_t cherokee_downloader_reuse (cherokee_downloader_t *downloader); 65 65 ret_t cherokee_downloader_connect (cherokee_downloader_t *downloader); cherokee/trunk/cherokee/handler_common.c
r597 r606 230 230 */ 231 231 if (S_ISDIR(info->st_mode)) { 232 cherokee_thread_t *thread = CONN_THREAD(conn); 232 233 cherokee_list_t *i; 233 234 … … 255 256 */ 256 257 if (*index == '/') { 257 cherokee_buffer_t new_local_dir = CHEROKEE_BUF_INIT;258 cherokee_buffer_t *new_local_dir = THREAD_TMP_BUF1(thread); 258 259 259 260 /* This means there is a configuration entry like: … … 268 269 /* Lets reconstruct the local directory 269 270 */ 270 cherokee_buffer_add_buffer (&new_local_dir, &CONN_VSRV(conn)->root); 271 cherokee_buffer_add (&new_local_dir, index, index_len); 271 cherokee_buffer_clean (new_local_dir); 272 cherokee_buffer_add_buffer (new_local_dir, &CONN_VSRV(conn)->root); 273 cherokee_buffer_add (new_local_dir, index, index_len); 272 274 273 ret = stat_file (use_iocache, iocache, &nocache_info, new_local_dir .buf, &file, &info);275 ret = stat_file (use_iocache, iocache, &nocache_info, new_local_dir->buf, &file, &info); 274 276 exists = (ret == ret_ok); 275 277 cherokee_iocache_mmap_release (iocache, file); 276 278 277 cherokee_buffer_mrproper (&new_local_dir);278 if (!exists)continue;279 if (!exists) 280 continue; 279 281 280 282 /* Build the new request before respin 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 } cherokee/trunk/cherokee/handler_proxy.c
r597 r606 249 249 cherokee_boolean_t rw; 250 250 cherokee_buffer_t *reply_header = &phdl->client.reply_header; 251 252 ret = cherokee_downloader_step (&phdl->client); 251 cherokee_thread_t *thread = HANDLER_THREAD(HDL_PROXY_HANDLER(phdl)); 252 cherokee_buffer_t *tmp1 = THREAD_TMP_BUF1(thread); 253 cherokee_buffer_t *tmp2 = THREAD_TMP_BUF2(thread); 254 255 ret = cherokee_downloader_step (&phdl->client, tmp1, tmp2); 253 256 254 257 switch (ret) { … … 293 296 { 294 297 ret_t ret; 295 296 ret = cherokee_downloader_step (&phdl->client); 298 cherokee_thread_t *thread = HANDLER_THREAD(HDL_PROXY_HANDLER(phdl)); 299 cherokee_buffer_t *tmp1 = THREAD_TMP_BUF1(thread); 300 cherokee_buffer_t *tmp2 = THREAD_TMP_BUF2(thread); 301 302 ret = cherokee_downloader_step (&phdl->client, tmp1, tmp2); 297 303 298 304 switch (ret) { cherokee/trunk/cherokee/handler_proxy.h
r597 r606 54 54 55 55 #define PROP_PROXY(x) ((cherokee_handler_proxy_props_t *)(x)) 56 #define HDL_PROXY(x) ((cherokee_handler_proxy_t *)( p))56 #define HDL_PROXY(x) ((cherokee_handler_proxy_t *)(x)) 57 57 #define HDL_PROXY_PROPS(x) (PROP_PROXY(HANDLER(x)->props)) 58 #define HDL_PROXY_HANDLER(x) ( &((x)->handler) ) 58 59 59 60 cherokee/trunk/cherokee/nonce.c
r602 r606 96 96 /* Generate nonce string 97 97 */ 98 cherokee_buffer_clean (nonce); 98 99 cherokee_buffer_add_ullong16(nonce, (cullong_t) CONN_SRV(conn)->bogo_now); 99 100 cherokee_buffer_add_ulong16 (nonce, (culong_t) rand()); cherokee/trunk/cherokee/request.c
r602 r606 77 77 78 78 ret_t 79 cherokee_request_header_build_string (cherokee_request_header_t *request, cherokee_buffer_t *buf )79 cherokee_request_header_build_string (cherokee_request_header_t *request, cherokee_buffer_t *buf, cherokee_buffer_t *tmp1, cherokee_buffer_t *tmp2) 80 80 { 81 81 cherokee_url_t *url = REQUEST_URL(request); … … 152 152 !cherokee_buffer_is_empty(&url->passwd)) { 153 153 154 cherokee_buffer_t tmp = CHEROKEE_BUF_INIT; 154 cherokee_buffer_clean (tmp1); 155 cherokee_buffer_clean (tmp2); 155 156 156 cherokee_buffer_add_va (&tmp, "%s:%s", url->user.buf, url->passwd.buf); 157 cherokee_buffer_encode_base64 (&tmp); 157 cherokee_buffer_add_buffer (tmp1, &url->user); 158 cherokee_buffer_add_char (tmp1, ':'); 159 cherokee_buffer_add_buffer (tmp1, &url->passwd); 160 161 cherokee_buffer_encode_base64 (tmp1, tmp2); 158 162 159 cherokee_buffer_add_ va (buf, "Authorization: Basic %s"CRLF, tmp.buf);160 161 cherokee_buffer_ mrproper (&tmp);163 cherokee_buffer_add_str (buf, "Authorization: Basic "); 164 cherokee_buffer_add_buffer (buf, tmp2); 165 cherokee_buffer_add_str (buf, CRLF); 162 166 } 163 167 cherokee/trunk/cherokee/request.h
r597 r606 36 36 cherokee_list_t list_entry; 37 37 cherokee_url_t url; 38 38 39 39 uint16_t pipeline; 40 40 cherokee_boolean_t keepalive; … … 60 60 61 61 ret_t cherokee_request_header_add_header (cherokee_request_header_t *request, char *ptr, cuint_t len); 62 ret_t cherokee_request_header_build_string (cherokee_request_header_t *request, cherokee_buffer_t *buf );62 ret_t cherokee_request_header_build_string (cherokee_request_header_t *request, cherokee_buffer_t *buf, cherokee_buffer_t *tmp1, cherokee_buffer_t *tmp2); 63 63 64 64 #endif /* CHEROKEE_REQUEST_H */ cherokee/trunk/cherokee/validator_htpasswd.c
r597 r606 31 31 32 32 #include "plugin_loader.h" 33 #include "thread.h" 33 34 #include "connection.h" 34 35 #include "connection-protected.h" … … 211 212 validate_non_salted_sha (cherokee_connection_t *conn, char *crypted) 212 213 { 213 cherokee_buffer_t sha1_client = CHEROKEE_BUF_INIT;214 214 cuint_t c_len = strlen (crypted); 215 cherokee_thread_t *thread = CONN_THREAD(conn); 216 cherokee_buffer_t *sha1_buf1 = THREAD_TMP_BUF1(thread); 217 cherokee_buffer_t *sha1_buf2 = THREAD_TMP_BUF2(thread); 215 218 216 219 /* Check the size. It should be: "{SHA1}" + Base64(SHA1(info)) … … 223 226 224 227 /* Decode user 225 */ 226 cherokee_buffer_add_buffer (&sha1_client, &conn->validator->passwd); 227 cherokee_buffer_encode_sha1_base64 (&sha1_client); 228 229 if (strcmp (sha1_client.buf, crypted) == 0) 228 */ 229 cherokee_buffer_clean (sha1_buf1); 230 cherokee_buffer_clean (sha1_buf2); 231 cherokee_buffer_add_buffer (sha1_buf1, &conn->validator->passwd); 232 cherokee_buffer_encode_sha1_base64 (sha1_buf1, sha1_buf2); 233 234 if (strcmp (sha1_buf2->buf, crypted) == 0) 230 235 return ret_ok; 231 236