Changeset e7b311 for server/src/http/modules/ngx_http_geo_module.c
- Timestamp:
- 02/03/09 19:41:37 (3 years ago)
- Branches:
- master-v0.7, nginx-v0.7, nginx-v0.8, upstream_count_limit
- Children:
- 2ac4f5
- Parents:
- 2240a4
- git-author:
- George Potapov <nephrite@…> (02/03/09 19:41:37)
- git-committer:
- George Potapov <nephrite@…> (02/03/09 19:41:37)
- File:
-
- 1 edited
-
server/src/http/modules/ngx_http_geo_module.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
server/src/http/modules/ngx_http_geo_module.c
rb82943 re7b311 519 519 ngx_http_geo_range_t *range; 520 520 521 for (n = start; n < end; n += 0x10000) {521 for (n = start; n <= end; n += 0x10000) { 522 522 523 523 h = n >> 16; 524 s = n & 0xffff; 524 525 if (n == start) { 526 s = n & 0xffff; 527 } else { 528 s = 0; 529 } 525 530 526 531 if ((n | 0xffff) > end) { … … 568 573 (a->nelts - 2 - i) * sizeof(ngx_http_geo_range_t)); 569 574 570 range = &range[i + 1]; 575 range[i + 1].start = (u_short) s; 576 range[i + 1].end = (u_short) e; 577 range[i + 1].value = ctx->value; 571 578 572 579 goto next; … … 579 586 "duplicate range \"%V\", value: \"%v\", old value: \"%v\"", 580 587 ctx->net, ctx->value, range[i].value); 581 continue; 582 } 588 589 range[i].value = ctx->value; 590 591 goto next; 592 } 593 594 if (s > (ngx_uint_t) range[i].start 595 && e < (ngx_uint_t) range[i].end) 596 { 597 /* split the range and insert the new one */ 598 599 range = ngx_array_push(a); 600 if (range == NULL) { 601 return NGX_CONF_ERROR; 602 } 603 604 range = ngx_array_push(a); 605 if (range == NULL) { 606 return NGX_CONF_ERROR; 607 } 608 609 range = a->elts; 610 611 ngx_memcpy(&range[i + 3], &range[i + 1], 612 (a->nelts - 3 - i) * sizeof(ngx_http_geo_range_t)); 613 614 range[i + 2].start = (u_short) (e + 1); 615 range[i + 2].end = range[i].end; 616 range[i + 2].value = range[i].value; 617 618 range[i + 1].start = (u_short) s; 619 range[i + 1].end = (u_short) e; 620 range[i + 1].value = ctx->value; 621 622 range[i].end = (u_short) (s - 1); 623 624 goto next; 625 } 626 627 if (s == (ngx_uint_t) range[i].start 628 && e < (ngx_uint_t) range[i].end) 629 { 630 /* shift the range start and insert the new range */ 631 632 range = ngx_array_push(a); 633 if (range == NULL) { 634 return NGX_CONF_ERROR; 635 } 636 637 range = a->elts; 638 639 ngx_memcpy(&range[i + 2], &range[i + 1], 640 (a->nelts - 2 - i) * sizeof(ngx_http_geo_range_t)); 641 642 range[i + 1].start = (u_short) (e + 1); 643 644 range[i].start = (u_short) s; 645 range[i].end = (u_short) e; 646 range[i].value = ctx->value; 647 648 goto next; 649 } 650 651 if (s > (ngx_uint_t) range[i].start 652 && e == (ngx_uint_t) range[i].end) 653 { 654 /* shift the range end and insert the new range */ 655 656 range = ngx_array_push(a); 657 if (range == NULL) { 658 return NGX_CONF_ERROR; 659 } 660 661 range = a->elts; 662 663 ngx_memcpy(&range[i + 2], &range[i + 1], 664 (a->nelts - 2 - i) * sizeof(ngx_http_geo_range_t)); 665 666 range[i + 1].start = (u_short) s; 667 range[i + 1].end = (u_short) e; 668 range[i + 1].value = ctx->value; 669 670 range[i].end = (u_short) (s - 1); 671 672 goto next; 673 } 674 675 s = (ngx_uint_t) range[i].start; 676 e = (ngx_uint_t) range[i].end; 583 677 584 678 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 585 "overlapped range \"%V\"", ctx->net); 679 "range \"%V\" overlaps \"%d.%d.%d.%d-%d.%d.%d.%d\"", 680 ctx->net, 681 h >> 8, h & 0xff, s >> 8, s & 0xff, 682 h >> 8, h & 0xff, e >> 8, e & 0xff); 586 683 587 684 return NGX_CONF_ERROR; … … 595 692 } 596 693 597 next:598 599 694 range->start = (u_short) s; 600 695 range->end = (u_short) e; 601 696 range->value = ctx->value; 697 698 next: 699 700 continue; 602 701 } 603 702 … … 617 716 warn = 0; 618 717 619 for (n = start; n < end; n += 0x10000) {718 for (n = start; n <= end; n += 0x10000) { 620 719 621 720 h = n >> 16; 622 s = n & 0xffff; 721 722 if (n == start) { 723 s = n & 0xffff; 724 } else { 725 s = 0; 726 } 623 727 624 728 if ((n | 0xffff) > end) { … … 644 748 ngx_memcpy(&range[i], &range[i + 1], 645 749 (a->nelts - 1 - i) * sizeof(ngx_http_geo_range_t)); 750 751 a->nelts--; 752 646 753 break; 647 754 }
Note: See TracChangeset
for help on using the changeset viewer.
