Mercurial > hg > nginx-tests
comparison h2.t @ 735:832cd7cc8f53
Tests: made h2.t inner functions anonymous.
No functional changes.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 06 Oct 2015 14:47:49 +0300 |
parents | 63c45a158cde |
children | dcbe4c3d6871 |
comparison
equal
deleted
inserted
replaced
734:78b4e12e6efe | 735:832cd7cc8f53 |
---|---|
2660 my $table = $ctx->{dynamic_decode}; | 2660 my $table = $ctx->{dynamic_decode}; |
2661 my %headers; | 2661 my %headers; |
2662 my $skip = 0; | 2662 my $skip = 0; |
2663 my ($index, $name, $value); | 2663 my ($index, $name, $value); |
2664 | 2664 |
2665 sub field { | 2665 my $field = sub { |
2666 my ($b) = @_; | 2666 my ($b) = @_; |
2667 my ($len, $s, $huff) = iunpack(7, @_); | 2667 my ($len, $s, $huff) = iunpack(7, @_); |
2668 | 2668 |
2669 my $field = substr($b, $s, $len); | 2669 my $field = substr($b, $s, $len); |
2670 $field = $huff ? dehuff($field) : $field; | 2670 $field = $huff ? dehuff($field) : $field; |
2671 $s += $len; | 2671 $s += $len; |
2672 return ($field, $s); | 2672 return ($field, $s); |
2673 } | 2673 }; |
2674 | 2674 |
2675 sub add { | 2675 my $add = sub { |
2676 my ($h, $n, $v) = @_; | 2676 my ($h, $n, $v) = @_; |
2677 return $h->{$n} = $v unless exists $h->{$n}; | 2677 return $h->{$n} = $v unless exists $h->{$n}; |
2678 $h->{$n} = [ $h->{$n} ] unless ref $h->{$n}; | 2678 $h->{$n} = [ $h->{$n} ] unless ref $h->{$n}; |
2679 push @{$h->{$n}}, $v; | 2679 push @{$h->{$n}}, $v; |
2680 } | 2680 }; |
2681 | 2681 |
2682 while ($skip < $length) { | 2682 while ($skip < $length) { |
2683 my $ib = unpack("\@$skip B8", $data); | 2683 my $ib = unpack("\@$skip B8", $data); |
2684 | 2684 |
2685 if (substr($ib, 0, 1) eq '1') { | 2685 if (substr($ib, 0, 1) eq '1') { |
2686 ($index, $skip) = iunpack(7, $data, $skip); | 2686 ($index, $skip) = iunpack(7, $data, $skip); |
2687 add(\%headers, | 2687 $add->(\%headers, |
2688 $table->[$index][0], $table->[$index][1]); | 2688 $table->[$index][0], $table->[$index][1]); |
2689 next; | 2689 next; |
2690 } | 2690 } |
2691 | 2691 |
2692 if (substr($ib, 0, 2) eq '01') { | 2692 if (substr($ib, 0, 2) eq '01') { |
2693 ($index, $skip) = iunpack(6, $data, $skip); | 2693 ($index, $skip) = iunpack(6, $data, $skip); |
2694 $name = $table->[$index][0]; | 2694 $name = $table->[$index][0]; |
2695 | 2695 |
2696 ($name, $skip) = field($data, $skip) unless $name; | 2696 ($name, $skip) = $field->($data, $skip) unless $name; |
2697 ($value, $skip) = field($data, $skip); | 2697 ($value, $skip) = $field->($data, $skip); |
2698 | 2698 |
2699 splice @$table, | 2699 splice @$table, |
2700 $ctx->{static_table_size}, 0, [ $name, $value ]; | 2700 $ctx->{static_table_size}, 0, [ $name, $value ]; |
2701 add(\%headers, $name, $value); | 2701 $add->(\%headers, $name, $value); |
2702 next; | 2702 next; |
2703 } | 2703 } |
2704 | 2704 |
2705 if (substr($ib, 0, 4) eq '0000') { | 2705 if (substr($ib, 0, 4) eq '0000') { |
2706 ($index, $skip) = iunpack(4, $data, $skip); | 2706 ($index, $skip) = iunpack(4, $data, $skip); |
2707 $name = $table->[$index][0]; | 2707 $name = $table->[$index][0]; |
2708 | 2708 |
2709 ($name, $skip) = field($data, $skip) unless $name; | 2709 ($name, $skip) = $field->($data, $skip) unless $name; |
2710 ($value, $skip) = field($data, $skip); | 2710 ($value, $skip) = $field->($data, $skip); |
2711 | 2711 |
2712 add(\%headers, $name, $value); | 2712 $add->(\%headers, $name, $value); |
2713 next; | 2713 next; |
2714 } | 2714 } |
2715 } | 2715 } |
2716 | 2716 |
2717 return \%headers; | 2717 return \%headers; |