Mercurial > hg > nginx-quic
comparison src/http/ngx_http_file_cache.c @ 2671:627dee566f6c
fix cache path slot
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 06 Apr 2009 08:35:34 +0000 |
parents | ba1f3cdba725 |
children | 197cda0e767e |
comparison
equal
deleted
inserted
replaced
2670:20a655d8a1f8 | 2671:627dee566f6c |
---|---|
1355 | 1355 |
1356 for (i = 2; i < cf->args->nelts; i++) { | 1356 for (i = 2; i < cf->args->nelts; i++) { |
1357 | 1357 |
1358 if (ngx_strncmp(value[i].data, "levels=", 7) == 0) { | 1358 if (ngx_strncmp(value[i].data, "levels=", 7) == 0) { |
1359 | 1359 |
1360 n = 0; | |
1361 p = value[i].data + 7; | 1360 p = value[i].data + 7; |
1362 last = value[i].data + value[i].len; | 1361 last = value[i].data + value[i].len; |
1363 | 1362 |
1364 while (p < last) { | 1363 for (n = 0; n < 3 && p < last; n++) { |
1365 | 1364 |
1366 if (*p > '0' && *p < '6') { | 1365 if (*p > '0' && *p < '3') { |
1367 | 1366 |
1368 cache->path->level[n] = *p++ - '0'; | 1367 cache->path->level[n] = *p++ - '0'; |
1369 cache->path->len += cache->path->level[n] + 1; | 1368 cache->path->len += cache->path->level[n] + 1; |
1370 | 1369 |
1371 if (p == last) { | 1370 if (p == last) { |
1372 break; | 1371 break; |
1373 } | 1372 } |
1374 | 1373 |
1375 if (*p++ == ':') { | 1374 if (*p++ == ':' && n < 2 && p != last) { |
1376 | |
1377 if (n > 2) { | |
1378 goto invalid_levels; | |
1379 } | |
1380 | |
1381 if (cache->path->level[n] == 0) { | |
1382 goto invalid_levels; | |
1383 } | |
1384 | |
1385 n++; | |
1386 | |
1387 continue; | 1375 continue; |
1388 } | 1376 } |
1377 | |
1378 goto invalid_levels; | |
1389 } | 1379 } |
1390 | 1380 |
1391 goto invalid_levels; | 1381 goto invalid_levels; |
1392 } | 1382 } |
1393 | 1383 |