summaryrefslogtreecommitdiffstats
path: root/debian/perl-framework/t
diff options
context:
space:
mode:
Diffstat (limited to 'debian/perl-framework/t')
-rw-r--r--debian/perl-framework/t/ab/base.t10
-rw-r--r--debian/perl-framework/t/apache/expr.t2
-rw-r--r--debian/perl-framework/t/apache/expr_string.t9
-rw-r--r--debian/perl-framework/t/apache/hostcheck.t5
-rw-r--r--debian/perl-framework/t/apache/leaks.t76
-rw-r--r--debian/perl-framework/t/apache/limits.t6
-rw-r--r--debian/perl-framework/t/apache/mergeslashes.t117
-rw-r--r--debian/perl-framework/t/apache/pr64339.t46
-rw-r--r--debian/perl-framework/t/apache/teclchunk.t57
-rw-r--r--debian/perl-framework/t/conf/core.conf.in40
-rw-r--r--debian/perl-framework/t/conf/extra.conf.in251
-rw-r--r--debian/perl-framework/t/conf/http2.conf.in105
-rw-r--r--debian/perl-framework/t/conf/include.conf.in5
-rw-r--r--debian/perl-framework/t/conf/proxy.conf.in74
-rw-r--r--debian/perl-framework/t/conf/ssl/proxyssl.conf.in61
-rw-r--r--debian/perl-framework/t/conf/ssl/ssl.conf.in20
-rw-r--r--debian/perl-framework/t/filter/case.t3
-rw-r--r--debian/perl-framework/t/htdocs/modules/actions/action/dummy.txt (renamed from debian/perl-framework/t/htdocs/modules/h2/files/empty.txt)0
-rw-r--r--debian/perl-framework/t/htdocs/modules/actions/script/dummy.txt0
-rw-r--r--debian/perl-framework/t/htdocs/modules/allowmethods/Get/none/.empty0
-rw-r--r--debian/perl-framework/t/htdocs/modules/allowmethods/Get/post/foo.txt1
-rw-r--r--debian/perl-framework/t/htdocs/modules/allowmethods/NoPost/.empty0
-rw-r--r--debian/perl-framework/t/htdocs/modules/allowmethods/Post/reset/.empty0
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/cgi/perl_post.pl.PL23
-rw-r--r--debian/perl-framework/t/htdocs/modules/dir/htaccess/sub1/index.html1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/001.html10
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/002.jpgbin90364 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/003.html11
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/003/003_img.jpgbin90364 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004.html23
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles.jpgbin742 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_002.jpgbin945 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_003.jpgbin697 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_004.jpgbin725 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_005.jpgbin837 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_006.jpgbin770 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_007.jpgbin747 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_008.jpgbin694 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_009.jpgbin704 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_010.jpgbin994 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_011.jpgbin979 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_012.jpgbin895 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_013.jpgbin958 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_014.jpgbin894 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_015.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_016.jpgbin703 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_017.jpgbin707 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_018.jpgbin701 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_019.jpgbin1013 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_020.jpgbin737 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_021.jpgbin801 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_022.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_023.jpgbin905 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_024.jpgbin980 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_025.jpgbin708 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_026.jpgbin694 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_027.jpgbin697 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_028.jpgbin795 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_029.jpgbin978 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_030.jpgbin707 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_031.jpgbin1060 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_032.jpgbin688 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_033.jpgbin701 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_034.jpgbin898 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_035.jpgbin986 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_036.jpgbin770 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_037.jpgbin959 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_038.jpgbin936 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_039.jpgbin700 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_040.jpgbin784 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_041.jpgbin758 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_042.jpgbin796 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_043.jpgbin813 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_044.jpgbin924 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_045.jpgbin978 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_046.jpgbin752 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_047.jpgbin751 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_048.jpgbin737 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_049.jpgbin992 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_050.jpgbin688 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_051.jpgbin697 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_052.jpgbin699 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_053.jpgbin1052 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_054.jpgbin694 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_055.jpgbin767 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_056.jpgbin952 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_057.jpgbin788 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_058.jpgbin759 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_059.jpgbin700 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_060.jpgbin985 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_061.jpgbin915 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_062.jpgbin681 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_063.jpgbin707 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_064.jpgbin693 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_065.jpgbin861 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_066.jpgbin991 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_067.jpgbin1056 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_068.jpgbin697 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_069.jpgbin1066 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_070.jpgbin1024 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_071.jpgbin784 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_072.jpgbin698 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_073.jpgbin1004 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_074.jpgbin969 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_075.jpgbin915 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_076.jpgbin784 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_077.jpgbin697 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_078.jpgbin692 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_079.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_080.jpgbin725 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_081.jpgbin877 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_082.jpgbin743 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_083.jpgbin785 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_084.jpgbin690 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_085.jpgbin724 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_086.jpgbin1054 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_087.jpgbin883 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_088.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_089.jpgbin693 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_090.jpgbin947 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_091.jpgbin959 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_092.jpgbin736 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_093.jpgbin806 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_094.jpgbin820 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_095.jpgbin918 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_096.jpgbin689 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_097.jpgbin796 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_098.jpgbin686 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_099.jpgbin698 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_100.jpgbin686 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_101.jpgbin686 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_102.jpgbin682 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_103.jpgbin703 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_104.jpgbin698 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_105.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_106.jpgbin989 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_107.jpgbin720 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_108.jpgbin834 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_109.jpgbin756 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_110.jpgbin703 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_111.jpgbin815 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_112.jpgbin780 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_113.jpgbin992 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_114.jpgbin862 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_115.jpgbin1024 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_116.jpgbin756 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_117.jpgbin1012 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_118.jpgbin905 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_119.jpgbin808 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_120.jpgbin814 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_121.jpgbin832 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_122.jpgbin704 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_123.jpgbin741 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_124.jpgbin694 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_125.jpgbin950 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_126.jpgbin770 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_127.jpgbin749 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_128.jpgbin942 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_129.jpgbin997 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_130.jpgbin708 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_131.jpgbin821 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_132.jpgbin849 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_133.jpgbin715 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_134.jpgbin794 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_135.jpgbin869 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_136.jpgbin1040 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_137.jpgbin757 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_138.jpgbin991 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_139.jpgbin704 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_140.jpgbin707 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_141.jpgbin959 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_142.jpgbin691 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_143.jpgbin921 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_144.jpgbin932 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_145.jpgbin696 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_146.jpgbin711 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_147.jpgbin817 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_148.jpgbin966 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_149.jpgbin1002 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_150.jpgbin900 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_151.jpgbin724 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_152.jpgbin1043 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_153.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_154.jpgbin971 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_155.jpgbin708 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_156.jpgbin699 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_157.jpgbin834 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_158.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_159.jpgbin880 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_160.jpgbin701 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_161.jpgbin688 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_162.jpgbin853 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_163.jpgbin690 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_164.jpgbin759 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_165.jpgbin831 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_166.jpgbin732 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_167.jpgbin955 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_168.jpgbin1043 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_169.jpgbin969 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_170.jpgbin701 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_171.jpgbin755 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_172.jpgbin924 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_173.jpgbin958 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_174.jpgbin998 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_175.jpgbin702 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_176.jpgbin760 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_177.jpgbin732 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_178.jpgbin929 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_179.jpgbin712 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/004/gophertiles_180.jpgbin1013 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/006.html23
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/006/006.css21
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/006/006.js31
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/007.html21
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/007/007.py29
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/009.py21
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/hello.pl13
-rw-r--r--debian/perl-framework/t/htdocs/modules/h2/index.html45
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/index.jpgbin952 -> 0 bytes
-rw-r--r--debian/perl-framework/t/htdocs/modules/h2/info.php3
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/necho.pl29
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/upload.pl47
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/h2/upload.py47
-rw-r--r--debian/perl-framework/t/htdocs/modules/h2/xxx-1.0.2a.tar.gzbin489 -> 0 bytes
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/include/comment.shtml5
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/include/mod_request/echo.shtml1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/include/mod_request/post.shtml1
-rw-r--r--debian/perl-framework/t/htdocs/modules/lua/filters.lua16
-rw-r--r--debian/perl-framework/t/htdocs/modules/lua/websockets.lua18
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/de/compressed/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/de/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/de/two/index.zh-TW.html1
-rw-r--r--debian/perl-framework/t/htdocs/modules/negotiation/de/two/map.var4
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/en/compressed/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/en/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/en/two/index.zh-TW.html1
-rw-r--r--debian/perl-framework/t/htdocs/modules/negotiation/en/two/map.var4
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/fr/compressed/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/fr/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/fr/two/index.zh-TW.html1
-rw-r--r--debian/perl-framework/t/htdocs/modules/negotiation/fr/two/map.var4
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/fu/compressed/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/fu/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/fu/two/index.zh-TW.html1
-rw-r--r--debian/perl-framework/t/htdocs/modules/negotiation/fu/two/map.var4
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.de1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.en1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fr1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fu1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.de1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.en1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fr1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fu1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.zh-TW1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.de.html1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.en.html1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fr.html1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fu.html1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.zh-TW.html1
-rwxr-xr-xdebian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/map.var21
-rw-r--r--debian/perl-framework/t/htdocs/modules/substitute/.empty0
-rw-r--r--debian/perl-framework/t/htdocs/modules/xml2enc/doc.fooxml1
-rw-r--r--debian/perl-framework/t/htdocs/modules/xml2enc/doc.isohtml1
-rw-r--r--debian/perl-framework/t/htdocs/modules/xml2enc/doc.notxml1
-rw-r--r--debian/perl-framework/t/htdocs/modules/xml2enc/doc.xml1
-rw-r--r--debian/perl-framework/t/htdocs/servlet/mapping.html1
-rw-r--r--debian/perl-framework/t/modules/actions.t59
-rw-r--r--debian/perl-framework/t/modules/alias.t31
-rw-r--r--debian/perl-framework/t/modules/allowmethods.t25
-rw-r--r--debian/perl-framework/t/modules/autoindex.t13
-rw-r--r--debian/perl-framework/t/modules/brotli.t109
-rw-r--r--debian/perl-framework/t/modules/cgi.t17
-rw-r--r--debian/perl-framework/t/modules/deflate.t7
-rw-r--r--debian/perl-framework/t/modules/dir.t17
-rw-r--r--debian/perl-framework/t/modules/headers.t178
-rw-r--r--debian/perl-framework/t/modules/heartbeat.t30
-rw-r--r--debian/perl-framework/t/modules/http2.t528
-rw-r--r--debian/perl-framework/t/modules/include.t49
-rw-r--r--debian/perl-framework/t/modules/info.t2
-rw-r--r--debian/perl-framework/t/modules/ldap.t52
-rw-r--r--debian/perl-framework/t/modules/lua.t2
-rw-r--r--debian/perl-framework/t/modules/negotiation.t6
-rw-r--r--debian/perl-framework/t/modules/proxy.t47
-rw-r--r--debian/perl-framework/t/modules/proxy_balancer.t118
-rw-r--r--debian/perl-framework/t/modules/proxy_fcgi.t12
-rw-r--r--debian/perl-framework/t/modules/proxy_websockets.t81
-rw-r--r--debian/perl-framework/t/modules/proxy_websockets_ssl.t86
-rw-r--r--debian/perl-framework/t/modules/rewrite.t92
-rw-r--r--debian/perl-framework/t/modules/sed.t48
-rw-r--r--debian/perl-framework/t/modules/session.t6
-rw-r--r--debian/perl-framework/t/modules/setenvif.t14
-rw-r--r--debian/perl-framework/t/modules/speling.t12
-rw-r--r--debian/perl-framework/t/modules/substitute.t19
-rw-r--r--debian/perl-framework/t/modules/usertrack.t14
-rw-r--r--debian/perl-framework/t/php-fpm/log/.empty0
-rw-r--r--debian/perl-framework/t/php-fpm/pools/www/.empty0
-rw-r--r--debian/perl-framework/t/php-fpm/run/.empty0
-rw-r--r--debian/perl-framework/t/php-fpm/var/log/.empty0
-rw-r--r--debian/perl-framework/t/security/CVE-2009-3555.t6
-rw-r--r--debian/perl-framework/t/ssl/ocsp.t19
-rw-r--r--debian/perl-framework/t/ssl/pha.t47
-rw-r--r--debian/perl-framework/t/ssl/pr12355.t21
-rw-r--r--debian/perl-framework/t/ssl/pr43738.t21
-rw-r--r--debian/perl-framework/t/ssl/proxy.t16
-rw-r--r--debian/perl-framework/t/ssl/varlookup.t7
306 files changed, 1989 insertions, 1218 deletions
diff --git a/debian/perl-framework/t/ab/base.t b/debian/perl-framework/t/ab/base.t
index 722c714..fe565f6 100644
--- a/debian/perl-framework/t/ab/base.t
+++ b/debian/perl-framework/t/ab/base.t
@@ -29,14 +29,14 @@ sub run_and_gather_output {
my $ab_path = catfile $vars->{bindir}, "ab";
my $http_url = Apache::TestRequest::module2url("core", {scheme => 'http', path => '/'});
-my $http_results = run_and_gather_output("$ab_path -B 127.0.0.1 -q -n 10 $http_url");
-ok ($http_results->{status} == 0);
-ok (scalar(@{$http_results->{stderr}}) == 0);
+my $http_results = run_and_gather_output("ASAN_OPTIONS='detect_leaks=0' $ab_path -B 127.0.0.1 -q -n 10 $http_url");
+ok $http_results->{status}, 0;
+ok scalar(@{$http_results->{stderr}}), 0;
if ($vars->{ssl_module_name}) {
my $https_url = Apache::TestRequest::module2url($vars->{ssl_module_name}, {scheme => 'https', path => '/'});
- my $https_results = run_and_gather_output("$ab_path -B 127.0.0.1 -q -n 10 $https_url");
- ok ($https_results->{status} == 0);
+ my $https_results = run_and_gather_output("ASAN_OPTIONS='detect_leaks=0' $ab_path -B 127.0.0.1 -q -n 10 $https_url");
+ ok $https_results->{status}, 0;
ok (scalar(@{$https_results->{stderr}}), 0,
"https had stderr output:" . Dumper $https_results->{stderr});
diff --git a/debian/perl-framework/t/apache/expr.t b/debian/perl-framework/t/apache/expr.t
index 58c4a57..7d62bc0 100644
--- a/debian/perl-framework/t/apache/expr.t
+++ b/debian/perl-framework/t/apache/expr.t
@@ -268,6 +268,8 @@ if (have_min_apache_version("2.5")) {
[ "'email:<redacted2>' -in split s/$SAN_split/\$1/, $SAN_list_one" => 0 ],
[ "'IP Address:%{REMOTE_ADDR}' -in split/, /, join $SAN_list_one"
=> 1 ],
+ [ "replace(%{REQUEST_METHOD}, 'E', 'O') == 'GOT'" => 1],
+ [ "replace(%{REQUEST_METHOD}, 'E', 'O') == 'GET'" => 0],
));
}
diff --git a/debian/perl-framework/t/apache/expr_string.t b/debian/perl-framework/t/apache/expr_string.t
index a9115ee..4682d4a 100644
--- a/debian/perl-framework/t/apache/expr_string.t
+++ b/debian/perl-framework/t/apache/expr_string.t
@@ -3,10 +3,12 @@ use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestRequest;
-use Apache::TestUtil qw(t_write_file t_start_error_log_watch t_finish_error_log_watch);
+use Apache::TestUtil qw(t_write_file t_start_error_log_watch t_finish_error_log_watch t_cmp);
use File::Spec;
+use Time::HiRes qw(usleep);
+
# test ap_expr
Apache::TestRequest::user_agent(keep_alive => 1);
@@ -62,6 +64,8 @@ foreach my $t (@test_cases) {
'SomeHeader' => 'SomeValue',
'User-Agent' => 'SomeAgent',
'Referer' => 'SomeReferer');
+ ### Sleep here, attempt to avoid intermittent failures.
+ usleep(250000);
my @loglines = t_finish_error_log_watch();
my @evalerrors = grep {/(?:internal evaluation error|flex scanner jammed)/i
@@ -97,8 +101,7 @@ foreach my $t (@test_cases) {
[ ]\(log_transaction) # trailing hook info (LogLevel debug and higher)
}x ) {
my $result = $1;
- print "Got '$result', expected '$expect'\n";
- ok($result eq $expect);
+ ok t_cmp($result, $expect, "log message @msg didn't match");
}
else {
print "Can't extract expr result from log message:\n@msg\n";
diff --git a/debian/perl-framework/t/apache/hostcheck.t b/debian/perl-framework/t/apache/hostcheck.t
index a295af7..62bb38d 100644
--- a/debian/perl-framework/t/apache/hostcheck.t
+++ b/debian/perl-framework/t/apache/hostcheck.t
@@ -21,7 +21,7 @@ my @test_cases = (
[ "GET / HTTP/1.1\r\nHost: nvh-strict\r\n\r\n" => 200, 200, "NVH matches"],
[ "GET / HTTP/1.1\r\nHost: nvh-strict:1\r\n\r\n" => 200, 200, "NVH matches port ignored"],
);
-plan tests => scalar(@test_cases) * 2, need_min_apache_version('2.5.1');
+plan tests => scalar(@test_cases) * 2, need_min_apache_version('2.4.49');
foreach my $vhosts ((["default" => 1], ["core" => 2])) {
@@ -41,11 +41,10 @@ foreach my $vhosts ((["default" => 1], ["core" => 2])) {
next;
}
+ print "# SENDING to " . peer($sock) . "\n# $req\n";
$sock->print($req);
$sock->shutdown(1);
- sleep(0.1);
$req = escape($req);
- print "# SENDING to " . peer($sock) . "\n# $req\n";
my $response_data = "";
my $buf;
diff --git a/debian/perl-framework/t/apache/leaks.t b/debian/perl-framework/t/apache/leaks.t
index 99ce600..bb7b329 100644
--- a/debian/perl-framework/t/apache/leaks.t
+++ b/debian/perl-framework/t/apache/leaks.t
@@ -9,61 +9,55 @@ my $url = "/memory_track";
my $init_iters = 2000;
my $iters = 500;
+my $active = GET_RC($url) == 200;
+
my $num_tests = $init_iters + $iters * 2;
-plan tests => $num_tests;
+plan tests => $num_tests,
+ need { "mod_memory_track not activated" => $active };
### this doesn't seem sufficient to force all requests over a single
### persistent connection any more, is there a better trick?
Apache::TestRequest::user_agent(keep_alive => 1);
Apache::TestRequest::scheme('http');
-my $r = GET $url;
+my $cid = -1;
+my $mem;
-if ($r->code != 200) {
- # these tests will be skipped for async MPMs or with an APR not
- # built with --enable-pool-debug.
- skip "mod_memory_track not activated" foreach (1..$num_tests);
+# initial iterations should get workers to steady-state memory use.
+foreach (1..$init_iters) {
+ ok t_cmp(GET_RC($url), 200, "200 response");
}
-else {
- my $cid = -1;
- my $mem;
-
- # initial iterations should get workers to steady-state memory use.
- foreach (1..$init_iters) {
- ok t_cmp(GET_RC($url), 200, "200 response");
- }
- # now test whether c->pool memory is increasing for further
- # requests on a given conn_rec (matched by id)... could track them
- # all with a bit more effort.
- foreach (1..$iters) {
- $r = GET $url;
+# now test whether c->pool memory is increasing for further
+# requests on a given conn_rec (matched by id)... could track them
+# all with a bit more effort.
+foreach (1..$iters) {
+ my $r = GET $url;
- print "# iter $_\n";
-
- ok t_cmp($r->code, 200, "got response");
+ print "# iter $_\n";
+
+ ok t_cmp($r->code, 200, "got response");
- my $content = $r->content;
- chomp $content;
- my ($key, $id, $bytes) = split ',', $content;
+ my $content = $r->content;
+ chomp $content;
+ my ($key, $id, $bytes) = split ',', $content;
- print "# $key, $id, $bytes\n";
+ print "# $key, $id, $bytes\n";
- if ($cid == -1) {
- $cid = $id;
- $mem = $bytes;
- ok 1;
- }
- elsif ($cid != $id) {
- skip "using wrong connection";
- }
- elsif ($bytes > $mem) {
- print "# error: pool memory increased from $mem to $bytes!\n";
- ok 0;
- }
- else {
- ok 1;
- }
+ if ($cid == -1) {
+ $cid = $id;
+ $mem = $bytes;
+ ok 1;
+ }
+ elsif ($cid != $id) {
+ skip "using wrong connection";
+ }
+ elsif ($bytes > $mem) {
+ print "# error: pool memory increased from $mem to $bytes!\n";
+ ok 0;
+ }
+ else {
+ ok 1;
}
}
diff --git a/debian/perl-framework/t/apache/limits.t b/debian/perl-framework/t/apache/limits.t
index 124f731..a475f82 100644
--- a/debian/perl-framework/t/apache/limits.t
+++ b/debian/perl-framework/t/apache/limits.t
@@ -12,7 +12,7 @@ use Apache::TestUtil;
#
# These values are chosen to exceed the limits in extra.conf, namely:
#
-# LimitRequestLine 128
+# LimitRequestLine @limitrequestline@
# LimitRequestFieldSize 1024
# LimitRequestFields 32
# <Directory @SERVERROOT@/htdocs/apache/limits>
@@ -20,10 +20,12 @@ use Apache::TestUtil;
# </Directory>
#
+my $limitrequestlinex2 = Apache::Test::config()->{vars}->{limitrequestlinex2};
+
my @conditions = qw(requestline fieldsize fieldcount bodysize merged_fieldsize);
my %params = ('requestline-succeed' => "/apache/limits/",
- 'requestline-fail' => ("/apache/limits/" . ('a' x 256)),
+ 'requestline-fail' => ("/apache/limits/" . ('a' x $limitrequestlinex2)),
'fieldsize-succeed' => 'short value',
'fieldsize-fail' => ('a' x 2048),
'fieldcount-succeed' => 1,
diff --git a/debian/perl-framework/t/apache/mergeslashes.t b/debian/perl-framework/t/apache/mergeslashes.t
new file mode 100644
index 0000000..850fc93
--- /dev/null
+++ b/debian/perl-framework/t/apache/mergeslashes.t
@@ -0,0 +1,117 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil;
+use MIME::Base64;
+use Data::Dumper;
+use HTTP::Response;
+use Socket;
+
+# undef: HTTPD should drop connection without error message
+
+my @test_cases = (
+ # request, status code global, status code 'mergeslashes off' VH, msg
+ [ "GET /authz_core/a/b/c/index.html HTTP/1.1\r\nHost: merge-default\r\nConnection: close\r\n\r\n" => 403, "exact match"],
+ [ "GET //authz_core/a/b/c/index.html HTTP/1.1\r\nHost: merge-default\r\nConnection: close\r\n\r\n" => 403, "merged even at front"],
+ [ "GET ///authz_core/a/b/c/index.html HTTP/1.1\r\nHost: merge-default\r\nConnection: close\r\n\r\n" => 403, "merged even at front"],
+ [ "GET /authz_core/a/b/c//index.html HTTP/1.1\r\nHost: merge-default\r\nConnection: close\r\n\r\n" => 403, "c// should be merged"],
+ [ "GET /authz_core/a//b/c/index.html HTTP/1.1\r\nHost: merge-default\r\nConnection: close\r\n\r\n" => 403, "a// should be merged"],
+ [ "GET /authz_core/a//b/c/index.html HTTP/1.1\r\nHost: merge-disabled\r\nConnection: close\r\n\r\n" => 403, "a// matches locationmatch"],
+ [ "GET /authz_core/a/b/c//index.html HTTP/1.1\r\nHost: merge-disabled\r\nConnection: close\r\n\r\n" => 200, "c// doesn't match locationmatch"],
+ [ "GET /authz_core/a/b/d/index.html HTTP/1.1\r\nHost: merge-disabled\r\nConnection: close\r\n\r\n" => 403, "baseline failed", need_min_apache_version('2.4.47')],
+ [ "GET /authz_core/a/b//d/index.html HTTP/1.1\r\nHost: merge-disabled\r\nConnection: close\r\n\r\n" => 403, "b//d not merged for Location with OFF",need_min_apache_version('2.4.47')],
+);
+
+plan tests => scalar(@test_cases), need_min_apache_version('2.4.39');
+
+
+ foreach my $t (@test_cases) {
+ my $req = $t->[0];
+ my $expect = $t->[1];
+ my $desc = $t->[2];
+ my $cond = $t->[3];
+ my $decoded;
+
+ if (defined($cond) && !$cond) {
+ skip("n/a");
+ }
+
+ my $sock = Apache::TestRequest::vhost_socket("core");
+ if (!$sock) {
+ print "# failed to connect\n";
+ ok(0);
+ next;
+ }
+
+ $sock->print($req);
+ sleep(0.1);
+ $req = escape($req);
+ print "# SENDING to " . peer($sock) . "\n# $req\n";
+
+ my $response_data = "";
+ my $buf;
+ while ($sock->read($buf, 10000) > 0) {
+ $response_data .= $buf;
+ }
+ my $response = HTTP::Response->parse($response_data);
+ if ($decoded) {
+ $response_data =~ s/<title>.*/.../s;
+ my $out = escape($response_data);
+ $out =~ s{\\n}{\\n\n# }g;
+ print "# RESPONSE:\n# $out\n";
+ }
+ if (! defined $response) {
+ die "HTTP::Response->parse failed";
+ }
+ my $rc = $response->code;
+ if (! defined $rc) {
+ if (! defined $expect) {
+ print "# expecting dropped connection and HTTPD dropped connection\n";
+ ok(1);
+ }
+ else {
+ print "# expecting $expect, but HTTPD dropped the connection\n";
+ ok(0);
+ }
+ }
+ elsif ($expect > 100) {
+ print "# expected $expect, got " . $response->code . " for $desc\n";
+ ok ($response->code, $expect, $desc );
+ }
+ elsif ($expect == 90) {
+ print "# expecting headerless HTTP/0.9 body, got response\n";
+ ok (1);
+ }
+ elsif ($expect) {
+ print "# expecting success, got ", $rc, ": $desc\n";
+ ok ($rc >= 200 && $rc < 400);
+ }
+ else {
+ print "# expecting error, got ", $rc, ": $desc\n";
+ ok ($rc >= 400);
+ }
+ }
+
+sub escape
+{
+ my $in = shift;
+ $in =~ s{\\}{\\\\}g;
+ $in =~ s{\r}{\\r}g;
+ $in =~ s{\n}{\\n}g;
+ $in =~ s{\t}{\\t}g;
+ $in =~ s{([\x00-\x1f])}{sprintf("\\x%02x", ord($1))}ge;
+ return $in;
+}
+
+sub peer
+{
+ my $sock = shift;
+ my $hersockaddr = getpeername($sock);
+ return "<disconnected>" if !$hersockaddr;
+ my ($port, $iaddr) = sockaddr_in($hersockaddr);
+ my $herhostname = gethostbyaddr($iaddr, AF_INET);
+ my $herstraddr = inet_ntoa($iaddr);
+ return "$herstraddr:$port";
+}
diff --git a/debian/perl-framework/t/apache/pr64339.t b/debian/perl-framework/t/apache/pr64339.t
new file mode 100644
index 0000000..00097e6
--- /dev/null
+++ b/debian/perl-framework/t/apache/pr64339.t
@@ -0,0 +1,46 @@
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestRequest;
+
+my @testcases = (
+ # Backend sends Content-Type: application/xml; charset=utf-8
+ ['/doc.xml', "application/xml; charset=utf-8", "fóó\n" ],
+
+ # Backend sends Content-Type: application/foo+xml; charset=utf-8
+ ['/doc.fooxml', "application/foo+xml; charset=utf-8", "fóó\n" ],
+
+ # Backend sends Content-Type: application/notreallyxml (no charset)
+ # This should NOT be transformed or have a charset added.
+ ['/doc.notxml', "application/notreallyxml", "f\xf3\xf3\n" ],
+
+ # Sent with charset=ISO-8859-1 - should be transformed to utf-8
+ ['/doc.isohtml', "text/html;charset=utf-8", "<html><body><p>fóó\n</p></body></html>" ],
+);
+
+# mod_xml2enc on trunk behaves quite differently to the 2.4.x version
+# after r1785780, and does NOT transform the response body. Unclear if
+# this is a regression, so restricting this test to 2.4.x (for now).
+
+if (have_min_apache_version('2.5.0')) {
+ print "1..0 # skip: Test only valid for 2.4.x";
+ exit 0;
+}
+
+if (not have_min_apache_version('2.4.59')) {
+ print "1..0 # skip: Test not valid before 2.4.59";
+ exit 0;
+}
+
+plan tests => (3*scalar @testcases), need [qw(xml2enc alias proxy_html proxy)];
+
+foreach my $t (@testcases) {
+ my $r = GET("/modules/xml2enc/front".$t->[0]);
+
+ ok t_cmp($r->code, 200, "fetching ".$t->[0]);
+ ok t_cmp($r->header('Content-Type'), $t->[1], "content-type header test for ".$t->[0]);
+ ok t_cmp($r->content, $t->[2], "content test for ".$t->[0]);
+}
diff --git a/debian/perl-framework/t/apache/teclchunk.t b/debian/perl-framework/t/apache/teclchunk.t
new file mode 100644
index 0000000..b804368
--- /dev/null
+++ b/debian/perl-framework/t/apache/teclchunk.t
@@ -0,0 +1,57 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+use Apache::TestCommon ();
+use Apache::TestRequest ();
+
+my $module = 'default';
+
+if (!have_min_apache_version('2.5.0')) {
+ print "1..0 # skip: Not supported yet";
+ exit 0;
+}
+
+plan tests => 4, ['echo_post_chunk'];
+
+my $sock = Apache::TestRequest::vhost_socket($module);
+ok $sock;
+
+Apache::TestRequest::socket_trace($sock);
+$sock->print("POST /echo_post_chunk HTTP/1.1\r\n");
+$sock->print("Host: localhost\r\n");
+$sock->print("Content-Length: 77\r\n");
+$sock->print("Transfer-Encoding: chunked\r\n");
+$sock->print("\r\n");
+$sock->print("0\r\n");
+$sock->print("X-Chunk-Trailer: $$\r\n");
+$sock->print("\r\n");
+$sock->print("GET /i_do_not_exist_in_your_wildest_imagination HTTP/1.1\r\n");
+$sock->print("Host: localhost\r\n");
+
+# Read the status line
+chomp(my $response = Apache::TestRequest::getline($sock) || '');
+$response =~ s/\s$//;
+ok t_cmp($response, "HTTP/1.1 200 OK", "response codes");
+
+# Read the rest
+do {
+ chomp($response = Apache::TestRequest::getline($sock));
+ $response =~ s/\s$//;
+}
+while ($response ne "");
+
+# Do the next request... that MUST fail.
+$sock->print("\r\n");
+$sock->print("\r\n");
+
+# read the trailer (pid)
+$response = Apache::TestRequest::getline($sock);
+chomp($response) if (defined($response));
+ok t_cmp($response, "$$", "trailer (pid)");
+
+# Make sure we have not received a 404.
+chomp($response = Apache::TestRequest::getline($sock) || 'NO');
+$response =~ s/\s$//;
+ok t_cmp($response, "NO", "no response");
diff --git a/debian/perl-framework/t/conf/core.conf.in b/debian/perl-framework/t/conf/core.conf.in
index 10e411f..c82f375 100644
--- a/debian/perl-framework/t/conf/core.conf.in
+++ b/debian/perl-framework/t/conf/core.conf.in
@@ -2,10 +2,11 @@
# will be converted to a set of NVH'es on the same dynamic port, so they
# are collected here.
+MaxMemFree 1
<VirtualHost strict-default:core>
ServerName default-strict
- <IfVersion >= 2.5.1>
+ <IfVersion >= 2.4.49>
# StrictHostCheck can only be configure globally or in a "default" vhost
StrictHostCheck ON
</IfVersion>
@@ -15,3 +16,40 @@
ServerAlias nvh-strict-alias
# Implicitly StrictHostCheck ON from default VH above
</VirtualHost>
+
+# MergeSlashes
+<IfVersion >= 2.4.39>
+ <VirtualHost merge-default:core>
+ ServerName merge-default
+ <Directory @DocumentRoot@/authz_core/>
+ require all granted
+ </Directory>
+ <LocationMatch ^/authz_core/a/b/c/index.html>
+ require all denied
+ </LocationMatch>
+ </virtualHost>
+ <VirtualHost merge-disabled:core>
+ ServerName merge-disabled
+ MergeSlashes OFF
+ <Directory @DocumentRoot@/authz_core/>
+ require all granted
+ </Directory>
+ <LocationMatch ^/authz_core/a/b/c/index.html>
+ require all denied
+ </LocationMatch>
+ <LocationMatch ^/authz_core/a//b/c/index.html>
+ require all denied
+ </LocationMatch>
+ <Location /authz_core/a/b/d>
+ require all denied
+ </Location>
+ <ifModule rewrite_module>
+ <Location /CVE-2020-1927/>
+ RewriteEngine ON
+ RewriteCond %{REQUEST_URI} (.+)/$
+ RewriteRule ^ %1 [L]
+ </Location>
+ </ifModule>
+ </virtualHost>
+</IfVersion>
+
diff --git a/debian/perl-framework/t/conf/extra.conf.in b/debian/perl-framework/t/conf/extra.conf.in
index abb699f..2719985 100644
--- a/debian/perl-framework/t/conf/extra.conf.in
+++ b/debian/perl-framework/t/conf/extra.conf.in
@@ -97,6 +97,7 @@
AddLanguage fr .fr
AddLanguage de .de
AddLanguage fu .fu
+ AddLanguage zh-TW .zh-TW
AddHandler type-map .var
</IfModule>
@@ -111,22 +112,27 @@
<Directory @SERVERROOT@/htdocs/modules/negotiation/en>
Options +MultiViews
- LanguagePriority en fr de fu
+ LanguagePriority en fr de fu zh-TW
</Directory>
<Directory @SERVERROOT@/htdocs/modules/negotiation/de>
Options +MultiViews
- LanguagePriority de en fr fu
+ LanguagePriority de en fr fu zh-TW
</Directory>
<Directory @SERVERROOT@/htdocs/modules/negotiation/fr>
Options +MultiViews
- LanguagePriority fr en de fu
+ LanguagePriority fr en de fu zh-TW
</Directory>
<Directory @SERVERROOT@/htdocs/modules/negotiation/fu>
Options +MultiViews
- LanguagePriority fu fr en de
+ LanguagePriority fu fr en de zh-TW
+ </Directory>
+
+ <Directory @SERVERROOT@/htdocs/modules/negotiation/zh-TW>
+ Options +MultiViews
+ LanguagePriority zh-TW fr fu en de
</Directory>
<IfDefine APACHE2>
@@ -248,7 +254,7 @@
### Proxy pass-through to env.pl
RewriteRule ^/modules/rewrite/proxy2/(.*)$ http://@SERVERNAME@:@PORT@/modules/cgi/$1 [L,P]
-
+
### Pass-through conditional on QUERY_STRING
RewriteCond %{QUERY_STRING} horse=trigger
RewriteRule ^/modules/rewrite/proxy3/(.*)$ http://@SERVERNAME@:@PORT@/modules/cgi/$1 [L,P]
@@ -256,6 +262,42 @@
### Redirect, server context
RewriteRule ^/modules/rewrite/redirect.html$ http://@SERVERNAME@:@PORT@/foobar.html [L,R=301]
+ RewriteRule ^/modules/rewrite/cookie/$ - [CO=NAME3:VAL:localhost:86400:/0:secure:httponly]
+ RewriteRule ^/modules/rewrite/cookie/0 - [CO=NAME3:VAL:localhost:86400:/0:secure:httponly:0]
+ RewriteRule ^/modules/rewrite/cookie/false - [CO=NAME3:VAL:localhost:86400:/0:secure:httponly:false]
+ RewriteRule ^/modules/rewrite/cookie/lax - [CO=NAME3:VAL:localhost:86400:/0:secure:httponly:lax]
+ RewriteRule ^/modules/rewrite/cookie/none - [CO=NAME3:VAL:localhost:86400:/0:secure:httponly:none]
+ RewriteRule ^/modules/rewrite/cookie/foo - [CO=NAME3:VAL:localhost:86400:/0:secure:httponly:foo]
+
+ RewriteRule ^/modules/rewrite/escaping/local/(.*) /?$1
+ RewriteRule ^/modules/rewrite/escaping/local_b/(.*) /?$1 [B]
+ RewriteRule ^/modules/rewrite/escaping/local_b_justslash/(.*) /?$1 [B=/]
+
+ RewriteRule ^/modules/rewrite/escaping/qsd-like/(.*) /$1? [R]
+ RewriteRule ^/modules/rewrite/escaping/qsd-like-plus-qsa/(.*) /$1? [R,QSA]
+ RewriteRule ^/modules/rewrite/escaping/qsd-like-plus-qsa-qsl/(.*) /$1? [R,QSA,QSL]
+
+ <IfVersion >= 2.4.57>
+ RewriteRule ^/modules/rewrite/escaping/local_bctls/(.*) /?$1 [BCTLS]
+ RewriteRule ^/modules/rewrite/escaping/local_bctls_andslash/(.*) /?$1 [B=/,BCTLS]
+ RewriteRule ^/modules/rewrite/escaping/local_bctls_nospace/(.*) /?$1 "[BCTLS,BNE= ?]"
+ RewriteRule ^/modules/rewrite/escaping/local_b_noslash/(.*) /?$1 [B,BNE=/]
+ </IfVersion>
+ RewriteRule ^/modules/rewrite/escaping/redir/(.*) http://@SERVERNAME@:@PORT@/?$1 [R]
+ RewriteRule ^/modules/rewrite/escaping/redir_ne/(.*) http://@SERVERNAME@:@PORT@/?$1 [R,NE]
+ RewriteRule ^/modules/rewrite/escaping/proxy/(.*) http://@SERVERNAME@:@PORT@/?$1 [P]
+ RewriteRule ^/modules/rewrite/escaping/proxy_ne/(.*) http://@SERVERNAME@:@PORT@/?$1 [P,NE]
+ <LocationMatch ^/modules/rewrite/escaping/fixups/>
+ RewriteRule local/(.*) /?$1
+ RewriteRule redir/(.*) http://@SERVERNAME@:@PORT@/?$1 [R]
+ RewriteRule redir_ne/(.*) http://@SERVERNAME@:@PORT@/?$1 [R,NE]
+ RewriteRule proxy/(.*) http://@SERVERNAME@:@PORT@/?$1 [P]
+ RewriteRule proxy_ne/(.*) http://@SERVERNAME@:@PORT@/?$1 [P,NE]
+ </LocationMatch>
+
+ <Location /modules/rewrite/escaping>
+ Header always set rewritten-query "expr=%{QUERY_STRING}"
+ </Location>
<VirtualHost cve_2011_3368_rewrite>
DocumentRoot @SERVERROOT@/htdocs/modules/proxy
RewriteEngine On
@@ -266,10 +308,10 @@
<IfVersion >= 2.4>
<Location /modules/rewrite/pr60478-rewrite-loop>
# This pair of RewriteRules will loop but should eventually 500 once we
- # reach LimitRequestLine * 2 bytes. (In this case, 128 * 2 = 256.)
+ # reach LimitRequestLine * 2 bytes. (In this case, @limitrequestline@ * 2 = @limitrequestlinex2@.)
RewriteRule ^(.*)X(.*)$ $1x$2
# Don't run the test machine out of memory on failure, just stop the loop
- RewriteCond expr "util_strlen(%{REQUEST_FILENAME}) -lt 257"
+ RewriteCond expr "util_strlen(%{REQUEST_FILENAME}) -le @limitrequestlinex2@"
RewriteRule X - [N]
</Location>
</IfVersion>
@@ -283,6 +325,8 @@
ProxyPass /reverse/notproxy/ !
ProxyPass /reverse/ http://@SERVERNAME@:@PORT@/
ProxyPassReverse /reverse/ http://@SERVERNAME@:@PORT@/
+ ProxyPassMatch ^/reverse-match/(.*)$ http://@SERVERNAME@:@PORT@/$1
+ ProxyPassMatch ^/reverse-slash(/.*)?$ http://@SERVERNAME@:@PORT@$1
ProxyPassReverseCookieDomain local remote
ProxyPassReverseCookiePath /local /remote
<IfVersion >= 2.4.7>
@@ -334,12 +378,7 @@
AddHandler cgi-script .sh
AddHandler cgi-script .pl
ScriptLog @SERVERROOT@/logs/mod_cgi.log
- <IfModule mod_cgi.c>
- ScriptLogLength 40960
- </IfModule>
- <IfModule !mod_cgi.c>
- ScriptLogLength 8192
- </IfModule>
+ ScriptLogLength 40960
ScriptLogBuffer 256
<Directory @SERVERROOT@/htdocs/modules/cgi>
@@ -417,6 +456,24 @@
</IfDefine>
</IfModule>
+
+<IfVersion >= 2.5.1>
+ <Location /redirect_relative/default>
+ Redirect /out-default
+ </Location>
+ <Location /redirect_relative/on>
+ RedirectRelative ON
+ Redirect /out-on
+ </Location>
+ <Location /redirect_relative/off>
+ RedirectRelative OFF
+ Redirect /out-off
+ </Location>
+ <Location /redirect_relative/off/fail>
+ Redirect fail-to-construct-url
+ </Location>
+</IfVersion>
+
Alias /manual @inherit_documentroot@/manual
<Location /manual>
Order deny,allow
@@ -465,6 +522,14 @@ Alias /manual @inherit_documentroot@/manual
<IfModule mod_dir.c>
<Directory @SERVERROOT@/htdocs/modules/dir/htaccess>
+ DirectorySlash OFF
+ </Directory>
+ <IfVersion >= 2.5.1>
+ <Directory @SERVERROOT@/htdocs/modules/dir/htaccess/sub>
+ DirectorySlash NotFound
+ </Directory>
+ </IfVersion>
+ <Directory @SERVERROOT@/htdocs/modules/dir/htaccess>
AllowOverride Indexes
</Directory>
</IfModule>
@@ -506,7 +571,9 @@ Alias /manual @inherit_documentroot@/manual
##
<IfModule mod_dav.c>
- DAVLockDB @SERVERROOT@/logs/davlock.db
+ <IfVersion < 2.5.1>
+ DAVLockDB @SERVERROOT@/logs/davlock.db
+ </IfVersion>
<Directory @SERVERROOT@/htdocs/modules/dav>
DAV On
@@ -532,7 +599,7 @@ Alias /manual @inherit_documentroot@/manual
## LimitRequest* directive testing
##
-LimitRequestLine 128
+LimitRequestLine @limitrequestline@
LimitRequestFieldSize 1024
LimitRequestFields 32
<Directory @SERVERROOT@/htdocs/apache/limits>
@@ -739,6 +806,46 @@ LimitRequestFields 32
</IfModule>
</IfDefine>
+##
+## Configuration for t/modules/ldap.t.
+##
+<IfDefine LDAP>
+ Alias /modules/ldap/simple @DocumentRoot@
+ Alias /modules/ldap/group @DocumentRoot@
+ Alias /modules/ldap/refer @DocumentRoot@
+
+ # Simple user lookup
+ <Location /modules/ldap/simple>
+ AuthLDAPURL "ldap://localhost:8389/dc=example,dc=com?uid"
+ AuthLDAPBindDN "cn=httpd,dc=example,dc=com"
+ AuthLDAPBindPassword mod_authnz_ldap
+ AuthType Basic
+ AuthName ldap-simple@httpd.apache.org
+ AuthBasicProvider ldap
+ Require valid-user
+ </Location>
+ # Static group configuration
+ <Location /modules/ldap/group>
+ AuthLDAPURL "ldap://localhost:8389/dc=example,dc=com?uid"
+ AuthLDAPBindDN "cn=httpd,dc=example,dc=com"
+ AuthLDAPBindPassword mod_authnz_ldap
+ AuthType Basic
+ AuthName ldap-group@httpd.apache.org
+ AuthBasicProvider ldap
+ Require ldap-group cn=Group One,dc=example,dc=com
+ </Location>
+ # Referral configuration -- the second user is only found if
+ # httpd follows the referral.
+ <Location /modules/ldap/refer>
+ AuthLDAPURL "ldap://localhost:8389/dc=example,dc=com?uid"
+ AuthLDAPBindDN "cn=httpd,dc=example,dc=com"
+ AuthLDAPBindPassword mod_authnz_ldap
+ AuthType Basic
+ AuthName ldap-refer@httpd.apache.org
+ AuthBasicProvider ldap
+ Require ldap-group cn=Subgroup,ou=dept,dc=example,dc=com
+ </Location>
+</IfDefine>
##
## ErrorDocument handling
@@ -828,16 +935,27 @@ LimitRequestFields 32
<Directory @SERVERROOT@/htdocs/modules/filter/bytype>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
</IfModule>
<IfModule mod_case_filter.c>
AddOutputFilterByType CASEFILTER application/xml
+ AddOutputFilterByType CASEFILTER text/xml
AddOutputFilterByType CASEFILTER text/plain
</IfModule>
</Directory>
</IfModule>
##
+## mod_dumpio configuration
+##
+<IfModule mod_dumpio.c>
+ DumpIOInput on
+ DumpIOOutput on
+ LogLevel dumpio:trace7
+</IfModule>
+
+##
## LogLevel configuration
##
<IfDefine APACHE2>
@@ -1061,6 +1179,14 @@ LimitRequestFields 32
LuaHookTranslateName @SERVERROOT@/htdocs/modules/lua/translate.lua translate_name2
# default: LuaInherit parent-first
</Location>
+
+ # Filtering tests
+ LuaOutputFilter LUA_OUTPUT @SERVERROOT@/htdocs/modules/lua/filters.lua output_filter
+ Alias /modules/lua/filtered @DocumentRoot@
+ <Location /modules/lua/filtered/>
+ SetOutputFilter LUA_OUTPUT
+ </Location>
+
</IfModule>
#
@@ -1255,9 +1381,22 @@ LimitRequestFields 32
<Directory @SERVERROOT@/htdocs/modules/allowmethods>
Options +Indexes
</Directory>
+ <IfVersion >= 2.5.1>
+ <Directory @SERVERROOT@/htdocs/modules/allowmethods/NoPost>
+ AllowMethods -POST
+ </Directory>
+ </IfVersion>
<Directory @SERVERROOT@/htdocs/modules/allowmethods/Get>
AllowMethods GET
</Directory>
+ <IfVersion >= 2.5.1>
+ <Directory @SERVERROOT@/htdocs/modules/allowmethods/Get/post>
+ AllowMethods +POST
+ </Directory>
+ <Directory @SERVERROOT@/htdocs/modules/allowmethods/Get/none>
+ AllowMethods -GET
+ </Directory>
+ </IfVersion>
<Directory @SERVERROOT@/htdocs/modules/allowmethods/Head>
AllowMethods HEAD
</Directory>
@@ -1318,3 +1457,85 @@ LimitRequestFields 32
CheckCaseOnly on
</Directory>
</IfModule>
+
+<IfModule mod_actions.c>
+ ScriptAlias /cgi_mod_actions @SERVERROOT@/htdocs/modules/cgi
+ <Location /mod_actions>
+ SetHandler my-handler
+ Action my-handler "/cgi_mod_actions/perl_echo.pl" virtual
+ </Location>
+
+ <Directory @SERVERROOT@/htdocs/modules/actions/action>
+ AddHandler my-file-type1 .xyz1
+ Action my-file-type1 "/cgi_mod_actions/perl_echo.pl"
+ AddHandler my-file-type2 .xyz2
+ Action my-file-type2 "/cgi_mod_actions/perl_echo.pl" virtual
+ </Directory>
+
+ <Directory @SERVERROOT@/htdocs/modules/actions/script>
+ Script GET "/cgi_mod_actions/perl_echo.pl"
+ Script POST "/cgi_mod_actions/perl_post.pl"
+ </Directory>
+</IfModule>
+
+<IfModule mod_heartbeat.c>
+ <IfModule mod_heartmonitor.c>
+ HeartbeatListen 239.0.0.1:27999
+ HeartbeatAddress 239.0.0.1:27999
+ </IfModule>
+</IfModule>
+
+#
+# t/modules/sed.t test config
+#
+<IfModule mod_sed.c>
+ AliasMatch /apache/sed/[^/]+/(.*) @DocumentRoot@/$1
+
+ <Location /apache/sed-echo>
+ SetHandler echo_post
+ SetInputFilter sed
+ </Location>
+
+ <Location /apache/sed/>
+ AddOutputFilter sed .html
+ </Location>
+
+ <Location /apache/sed/out-foo>
+ OutputSed "s/foo/bar/g"
+ </Location>
+ <Location /apache/sed-echo/input>
+ InputSed "s/foo/bar/g"
+ </Location>
+ <Location /apache/sed-echo/out-foo-grow>
+ SetOutputFilter sed
+ OutputSed "s/foo/barbarbarbar/g"
+ </Location>
+</IfModule>
+
+#
+# t/apache/pr64339.t test configuration
+#
+<IfModule mod_xml2enc.c>
+ <IfModule mod_proxy_html.c>
+ <IfModule mod_proxy.c>
+ Alias /modules/xml2enc/back @SERVERROOT@/htdocs/modules/xml2enc
+ Alias /modules/xml2enc/back/iso @SERVERROOT@/htdocs/modules/xml2enc
+ <Location /modules/xml2enc/back>
+ AddType application/foo+xml fooxml
+ AddType application/notreallyxml notxml
+ AddType application/xml xml
+ AddType text/html isohtml
+ AddCharset ISO-8859-1 .isohtml
+ AddCharset UTF-8 .xml
+ AddCharset UTF-8 .fooxml
+ </Location>
+ <Location /modules/xml2enc/front>
+ ProxyHTMLEnable on
+ # mod_proxy_html needs some configuration.
+ ProxyHTMLURLMap / /blah
+ ProxyHTMLLinks a href
+ ProxyPass http://@SERVERNAME@:@PORT@/modules/xml2enc/back
+ </Location>
+ </IfModule>
+ </IfModule>
+</IfModule>
diff --git a/debian/perl-framework/t/conf/http2.conf.in b/debian/perl-framework/t/conf/http2.conf.in
deleted file mode 100644
index 2e6ca67..0000000
--- a/debian/perl-framework/t/conf/http2.conf.in
+++ /dev/null
@@ -1,105 +0,0 @@
-##
-## mod_http2 test config
-##
-
-<IfDefine APACHE2>
- <IfModule http2_module>
-
- LogLevel http2:debug
-
- <VirtualHost h2c>
- Protocols h2c http/1.1
-
- <IfModule @CGI_MODULE@>
- <Directory @SERVERROOT@/htdocs/modules/h2>
- Options +ExecCGI
- AddHandler cgi-script .pl
-
- </Directory>
- </IfModule>
-
- <Location /modules/h2/hello.pl>
- </Location>
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteRule ^/modules/h2/latest.tar.gz$ /modules/h2/xxx-1.0.2a.tar.gz [R=302,NC]
- </IfModule>
-
- </VirtualHost>
-
- <IfModule @ssl_module@>
-
- <VirtualHost @SERVERNAME@:h2>
- Protocols h2 http/1.1
- H2Direct on
-
- SSLEngine on
- SSLCACertificateFile @SSLCA@/asf/certs/ca.crt
- SSLCACertificatePath @ServerRoot@/conf/ssl
- SSLCARevocationFile @SSLCA@/asf/crl/ca-bundle.crl
- SSLCARevocationCheck chain
-
- # taken from https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations
- #
- SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
- SSLProtocol All -SSLv2 -SSLv3
- SSLOptions +StdEnvVars
-
- <IfVersion >= 2.4.18>
- # need this off as long as we ran on old openssl
- H2ModernTLSOnly off
- </IfVersion>
-
- <IfModule @CGI_MODULE@>
- <Directory @SERVERROOT@/htdocs/modules/h2>
- Options +ExecCGI
- AddHandler cgi-script .pl
- </Directory>
- </IfModule>
-
- <Location /modules/h2/hello.pl>
- </Location>
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteRule ^/modules/h2/latest.tar.gz$ /modules/h2/xxx-1.0.2a.tar.gz [R=302,NC]
- </IfModule>
-
- </VirtualHost>
-
- <VirtualHost noh2.example.org:h2>
- Protocols http/1.1
- H2Direct off
- </VirtualHost>
-
- <VirtualHost test.example.org:h2>
- Protocols h2 http/1.1
- H2Direct on
-
- SSLEngine on
- SSLCACertificateFile @SSLCA@/asf/certs/ca.crt
- SSLCACertificatePath @ServerRoot@/conf/ssl
- SSLCARevocationFile @SSLCA@/asf/crl/ca-bundle.crl
- SSLCARevocationCheck chain
-
- # taken from https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations
- #
- SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
- SSLProtocol All -SSLv2 -SSLv3
- SSLOptions +StdEnvVars
-
- </VirtualHost>
-
- <VirtualHost test2.example.org:h2>
- Protocols http/1.1 h2
- H2Direct on
- </VirtualHost>
-
- <VirtualHost test-ser.example.org:h2>
- </VirtualHost>
-
- </ifModule>
-
- </IfModule>
-
-</IfDefine>
-
diff --git a/debian/perl-framework/t/conf/include.conf.in b/debian/perl-framework/t/conf/include.conf.in
index 7e686b9..349f565 100644
--- a/debian/perl-framework/t/conf/include.conf.in
+++ b/debian/perl-framework/t/conf/include.conf.in
@@ -46,6 +46,11 @@
Options Includes
</Directory>
+ <Directory @SERVERROOT@/htdocs/modules/include/mod_request>
+ Options Includes
+ KeptBodySize 32
+ </Directory>
+
<IfDefine APACHE2>
<IfModule mod_bucketeer.c>
<Directory @SERVERROOT@/htdocs/modules/include/bucketeer>
diff --git a/debian/perl-framework/t/conf/proxy.conf.in b/debian/perl-framework/t/conf/proxy.conf.in
index 5f740cd..a199ca8 100644
--- a/debian/perl-framework/t/conf/proxy.conf.in
+++ b/debian/perl-framework/t/conf/proxy.conf.in
@@ -6,6 +6,11 @@
ProxyRequests On
</VirtualHost>
+ <IfVersion >= 2.4.49>
+ # Test the mapping.
+ ProxyPass /mapping http://@SERVERNAME@:@PORT@/servlet mapping=servlet
+ </IfVersion>
+
</IfModule>
<IfModule mod_proxy_hcheck.c>
@@ -24,51 +29,51 @@
</VirtualHost>
<VirtualHost proxy_http_balancer>
+
+ <IfModule mod_lbmethod_byrequests.c>
<Proxy balancer://foo1>
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL1_PORT@ loadfactor=1
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL2_PORT@ loadfactor=1
</Proxy>
+ ProxySet balancer://foo1 lbmethod=byrequests
+ <Location /baltest1>
+ ProxyPass balancer://foo1/
+ </Location>
+ </IfModule>
+ <IfModule mod_lbmethod_bytraffic.c>
<Proxy balancer://foo2>
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL1_PORT@ loadfactor=1
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL2_PORT@ loadfactor=1
</Proxy>
+ ProxySet balancer://foo2 lbmethod=bytraffic
+ <Location /baltest2>
+ ProxyPass balancer://foo2/
+ </Location>
+ </IfModule>
+ <IfModule mod_lbmethod_bybusyness.c>
<Proxy balancer://foo3>
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL1_PORT@ loadfactor=1
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL2_PORT@ loadfactor=1
</Proxy>
+ ProxySet balancer://foo3 lbmethod=bybusyness
+ <Location /baltest3>
+ ProxyPass balancer://foo3/
+ </Location>
+ </IfModule>
+ <IfModule mod_lbmethod_heartbeat.c>
<Proxy balancer://foo4>
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL1_PORT@ loadfactor=1
BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL2_PORT@ loadfactor=1
</Proxy>
-
- ProxySet balancer://foo1 lbmethod=byrequests
- ProxySet balancer://foo2 lbmethod=bytraffic
- ProxySet balancer://foo3 lbmethod=bybusyness
- <IfVersion >= 2.3.0>
- ProxySet balancer://foo4 lbmethod=heartbeat
- </IfVersion>
-
- <Location /baltest1>
- ProxyPass balancer://foo1/
- </Location>
-
- <Location /baltest2>
- ProxyPass balancer://foo2/
- </Location>
-
- <Location /baltest3>
- ProxyPass balancer://foo3/
+ ProxySet balancer://foo4 lbmethod=heartbeat
+ <Location /baltest4>
+ # TODO heartbeat needs additional configuration to have it work
+ ProxyPass balancer://foo4/
</Location>
-
- <IfVersion >= 2.3.0>
- <Location /baltest4>
- # TODO heartbeat needs additional configuration to have it work
- ProxyPass balancer://foo4/
- </Location>
- </IfVersion>
+ </IfModule>
## PR 45434 tests
<Proxy balancer://pr45434>
@@ -78,6 +83,22 @@
ProxyPass /pr45434 balancer://pr45434/alias
ProxyPassReverse /pr45434 balancer://pr45434/alias
+ <Proxy balancer://failover>
+ BalancerMember http://@SERVERNAME@:@NextAvailablePort@ loadfactor=1 retry=1ms
+ BalancerMember http://@SERVERNAME@:@PROXY_HTTP_BAL1_PORT@ loadfactor=1 status=H
+ </Proxy>
+ ProxyPassMatch ^/baltest_echo_post balancer://failover/echo_post
+
+ ## Test "dynamic balancer
+ <Proxy balancer://dynproxy>
+ ProxySet growth=10
+ </Proxy>
+ <Location /balancer-manager>
+ SetHandler balancer-manager
+ Allow from all
+ </Location>
+ ProxyPass /dynproxy balancer://dynproxy/
+
</VirtualHost>
</IfModule>
@@ -161,6 +182,9 @@
</VirtualHost>
+
+ ProxyPass /proxy/wsoc ws://@SERVERNAME@:@PORT@/modules/lua/websockets.lua
+
</IfModule>
<IfModule mod_rewrite.c>
diff --git a/debian/perl-framework/t/conf/ssl/proxyssl.conf.in b/debian/perl-framework/t/conf/ssl/proxyssl.conf.in
index dc18fdf..161385b 100644
--- a/debian/perl-framework/t/conf/ssl/proxyssl.conf.in
+++ b/debian/perl-framework/t/conf/ssl/proxyssl.conf.in
@@ -51,6 +51,66 @@
ProxyPass / https://@proxyssl_url@/
ProxyPassReverse / https://@proxyssl_url@/
+
+ ProxyPass /proxy/wsoc wss://localhost:@proxy_https_https_port@/modules/lua/websockets.lua
+ </VirtualHost>
+
+ #here we can test http <-> https using SSLProxyMachine* inside <Proxy>
+ <VirtualHost proxy_http_https_proxy_section>
+ #these are not on by default in the 1.x based mod_ssl
+ <IfDefine APACHE2>
+ SSLProxyEngine On
+
+ SSLProxyProtocol All
+ SSLProxyCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
+
+ SSLProxyCACertificateFile @SSLCA@/asf/certs/ca.crt
+ SSLProxyCACertificatePath @ServerRoot@/conf/ssl
+ SSLProxyCARevocationFile @SSLCA@/asf/crl/ca-bundle.crl
+ <IfVersion >= 2.3.15>
+ SSLProxyCARevocationCheck chain
+ </IfVersion>
+ SSLProxyVerify on
+ SSLProxyVerifyDepth 10
+ </IfDefine>
+
+
+ ProxyPass / https://@proxyssl_url@/
+ ProxyPassReverse / https://@proxyssl_url@/
+ <IfDefine APACHE2>
+ <Proxy https://@proxyssl_url@>
+ SSLProxyMachineCertificateFile @SSLCA@/asf/proxy/client_ok.pem
+ #SSLProxyMachineCertificatePath @SSLCA@/asf/proxy
+ </Proxy>
+ </IfDefine>
+ </VirtualHost>
+
+
+ #here we can test https <-> https using SSLProxyMachine* inside <Proxy>
+ <VirtualHost proxy_https_https_proxy_section>
+ SSLEngine on
+
+ #these are not on by default in the 1.x based mod_ssl
+ <IfDefine APACHE2>
+ SSLProxyEngine On
+ SSLProxyCACertificateFile @SSLCA@/asf/certs/ca.crt
+ SSLProxyVerify on
+ SSLProxyCARevocationPath @SSLCA@/asf/crl
+ <IfVersion >= 2.3.15>
+ SSLProxyCARevocationCheck chain
+ </IfVersion>
+ </IfDefine>
+
+
+ ProxyPass / https://@proxyssl_url@/
+ ProxyPassReverse / https://@proxyssl_url@/
+ <IfDefine APACHE2>
+ <Proxy https://@proxyssl_url@>
+ # ensure that client_ok.pem is picked first:
+ SSLProxyMachineCertificateFile @SSLCA@/asf/proxy/client_ok.pem
+ SSLProxyMachineCertificatePath @SSLCA@/asf/proxy
+ </Proxy>
+ </IfDefine>
</VirtualHost>
#here we can test https <-> http
@@ -60,7 +120,6 @@
ProxyPass / http://@servername@:@port@/
ProxyPassReverse / http://@servername@:@port@/
</VirtualHost>
-
</IfModule>
</IfModule>
diff --git a/debian/perl-framework/t/conf/ssl/ssl.conf.in b/debian/perl-framework/t/conf/ssl/ssl.conf.in
index f796b34..6fadf33 100644
--- a/debian/perl-framework/t/conf/ssl/ssl.conf.in
+++ b/debian/perl-framework/t/conf/ssl/ssl.conf.in
@@ -5,11 +5,12 @@
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
- SSLSessionCache none
- #XXX: would be nice to test these
- #SSLSessionCache shm:@ServerRoot@/logs/ssl_scache(512000)
- #SSLSessionCache dbm:@ServerRoot@/logs/ssl_scache
- #SSLSessionCacheTimeout 300
+ <IfDefine TEST_SSL_SESSCACHE>
+ SSLSessionCache ${SSL_SESSCACHE}
+ </IfDefine>
+ <IfDefine !TEST_SSL_SESSCACHE>
+ SSLSessionCache none
+ </IfDefine>
<IfVersion < 2.3.4>
#SSLMutex file:@ServerRoot@/logs/ssl_mutex
@@ -87,6 +88,15 @@
SSLVerifyDepth 10
</Location>
+ # t/ssl/pha.t
+ <Location /require/small>
+ SSLVerifyClient require
+ SSLVerifyDepth 10
+
+ SSLRenegBufferSize 10
+ </Location>
+ Alias /require/small @DocumentRoot@/modules/cgi
+
#t/ssl/require.t
Alias /require/asf @DocumentRoot@
Alias /require/snakeoil @DocumentRoot@
diff --git a/debian/perl-framework/t/filter/case.t b/debian/perl-framework/t/filter/case.t
index 8037789..9bd6915 100644
--- a/debian/perl-framework/t/filter/case.t
+++ b/debian/perl-framework/t/filter/case.t
@@ -9,7 +9,7 @@ my %urls = (
mod_php4 => '/php/hello.php',
mod_cgi => '/modules/cgi/perl.pl',
mod_test_rwrite => '/test_rwrite',
- mod_alias => '/getfiles-perl-pod/perlsub.pod',
+ mod_alias => '/getfiles-perl-pod/perlsub.pod', # requires perl-doc on Ubuntu
);
my @filter = ('X-AddOutputFilter' => 'CaseFilter'); #mod_client_add_filter
@@ -29,6 +29,7 @@ for my $module (sort keys %urls) {
print "# testing $module with $urls{$module}\n";
print "# expected 200\n";
print "# received ".$r->code."\n";
+ print "# body: ".$r->content."\n";
verify($r);
}
diff --git a/debian/perl-framework/t/htdocs/modules/h2/files/empty.txt b/debian/perl-framework/t/htdocs/modules/actions/action/dummy.txt
index e69de29..e69de29 100644
--- a/debian/perl-framework/t/htdocs/modules/h2/files/empty.txt
+++ b/debian/perl-framework/t/htdocs/modules/actions/action/dummy.txt
diff --git a/debian/perl-framework/t/htdocs/modules/actions/script/dummy.txt b/debian/perl-framework/t/htdocs/modules/actions/script/dummy.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/actions/script/dummy.txt
diff --git a/debian/perl-framework/t/htdocs/modules/allowmethods/Get/none/.empty b/debian/perl-framework/t/htdocs/modules/allowmethods/Get/none/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/allowmethods/Get/none/.empty
diff --git a/debian/perl-framework/t/htdocs/modules/allowmethods/Get/post/foo.txt b/debian/perl-framework/t/htdocs/modules/allowmethods/Get/post/foo.txt
new file mode 100644
index 0000000..5716ca5
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/allowmethods/Get/post/foo.txt
@@ -0,0 +1 @@
+bar
diff --git a/debian/perl-framework/t/htdocs/modules/allowmethods/NoPost/.empty b/debian/perl-framework/t/htdocs/modules/allowmethods/NoPost/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/allowmethods/NoPost/.empty
diff --git a/debian/perl-framework/t/htdocs/modules/allowmethods/Post/reset/.empty b/debian/perl-framework/t/htdocs/modules/allowmethods/Post/reset/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/allowmethods/Post/reset/.empty
diff --git a/debian/perl-framework/t/htdocs/modules/cgi/perl_post.pl.PL b/debian/perl-framework/t/htdocs/modules/cgi/perl_post.pl.PL
new file mode 100755
index 0000000..e19d204
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/cgi/perl_post.pl.PL
@@ -0,0 +1,23 @@
+local ($buffer, @pairs, $pair, $name, $value);
+
+print "Content-type: text/plain\n\n";
+
+$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
+print "$ENV{'REQUEST_METHOD'}\n";
+
+# Read in text
+if ($ENV{'REQUEST_METHOD'} eq "POST") {
+ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
+} else {
+ $buffer = $ENV{'QUERY_STRING'};
+}
+
+# Split information into name/value pairs
+@pairs = split(/&/, $buffer);
+foreach $pair (@pairs) {
+ ($name, $value) = split(/=/, $pair);
+ $value =~ tr/+/ /;
+ $value =~ s/%(..)/pack("C", hex($1))/eg;
+
+ print "$name: $value\n";
+}
diff --git a/debian/perl-framework/t/htdocs/modules/dir/htaccess/sub1/index.html b/debian/perl-framework/t/htdocs/modules/dir/htaccess/sub1/index.html
new file mode 100644
index 0000000..be1a204
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/dir/htaccess/sub1/index.html
@@ -0,0 +1 @@
+dir index
diff --git a/debian/perl-framework/t/htdocs/modules/h2/001.html b/debian/perl-framework/t/htdocs/modules/h2/001.html
deleted file mode 100755
index 184952d..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/001.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML>
- <html>
- <head>
- <title>HTML/2.0 Test File: 001</title>
- </head>
- <body>
- <p><h1>HTML/2.0 Test File: 001</h1></p>
- <p>This file only contains a simple HTML structure with plain text.</p>
- </body>
-</html>
diff --git a/debian/perl-framework/t/htdocs/modules/h2/002.jpg b/debian/perl-framework/t/htdocs/modules/h2/002.jpg
deleted file mode 100755
index 3feefb0..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/002.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/003.html b/debian/perl-framework/t/htdocs/modules/h2/003.html
deleted file mode 100755
index d5b08c5..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/003.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML>
- <html>
- <head>
- <title>HTML/2.0 Test File: 003</title>
- </head>
- <body>
- <p><h1>HTML/2.0 Test File: 003</h1></p>
- <p>This is a text HTML file with a big image:</p>
- <p><img src="003/003_img.jpg" alt="GSMA Logo" style="width:269px;height:249px"></p>
- </body>
-</html>
diff --git a/debian/perl-framework/t/htdocs/modules/h2/003/003_img.jpg b/debian/perl-framework/t/htdocs/modules/h2/003/003_img.jpg
deleted file mode 100755
index 3feefb0..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/003/003_img.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004.html b/debian/perl-framework/t/htdocs/modules/h2/004.html
deleted file mode 100755
index 768cb82..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html>
- <head>
- <title>HTML/2.0 Test File: 004</title>
- </head>
- <body>
- <p><h1>HTML/2.0 Test File: 004</h1>
- This file contains plain text with a bunch of images.<br>
- <img src="004/gophertiles_142.jpg" height="32" width="32"><img src="004/gophertiles_084.jpg" height="32" width="32"><img src="004/gophertiles_052.jpg" height="32" width="32"><img src="004/gophertiles_077.jpg" height="32" width="32"><img src="004/gophertiles_030.jpg" height="32" width="32"><img src="004/gophertiles_027.jpg" height="32" width="32"><img src="004/gophertiles_039.jpg" height="32" width="32"><img src="004/gophertiles_025.jpg" height="32" width="32"><img src="004/gophertiles_017.jpg" height="32" width="32"><img src="004/gophertiles_179.jpg" height="32" width="32"><img src="004/gophertiles_032.jpg" height="32" width="32"><img src="004/gophertiles_161.jpg" height="32" width="32"><img src="004/gophertiles_088.jpg" height="32" width="32"><img src="004/gophertiles_022.jpg" height="32" width="32"><img src="004/gophertiles_146.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_102.jpg" height="32" width="32"><img src="004/gophertiles_009.jpg" height="32" width="32"><img src="004/gophertiles_132.jpg" height="32" width="32"><img src="004/gophertiles_137.jpg" height="32" width="32"><img src="004/gophertiles_055.jpg" height="32" width="32"><img src="004/gophertiles_036.jpg" height="32" width="32"><img src="004/gophertiles_127.jpg" height="32" width="32"><img src="004/gophertiles_145.jpg" height="32" width="32"><img src="004/gophertiles_147.jpg" height="32" width="32"><img src="004/gophertiles_153.jpg" height="32" width="32"><img src="004/gophertiles_105.jpg" height="32" width="32"><img src="004/gophertiles_103.jpg" height="32" width="32"><img src="004/gophertiles_033.jpg" height="32" width="32"><img src="004/gophertiles_054.jpg" height="32" width="32"><img src="004/gophertiles_015.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_016.jpg" height="32" width="32"><img src="004/gophertiles_072.jpg" height="32" width="32"><img src="004/gophertiles_115.jpg" height="32" width="32"><img src="004/gophertiles_108.jpg" height="32" width="32"><img src="004/gophertiles_148.jpg" height="32" width="32"><img src="004/gophertiles_070.jpg" height="32" width="32"><img src="004/gophertiles_083.jpg" height="32" width="32"><img src="004/gophertiles_118.jpg" height="32" width="32"><img src="004/gophertiles_053.jpg" height="32" width="32"><img src="004/gophertiles_021.jpg" height="32" width="32"><img src="004/gophertiles_059.jpg" height="32" width="32"><img src="004/gophertiles_130.jpg" height="32" width="32"><img src="004/gophertiles_163.jpg" height="32" width="32"><img src="004/gophertiles_098.jpg" height="32" width="32"><img src="004/gophertiles_064.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_018.jpg" height="32" width="32"><img src="004/gophertiles_058.jpg" height="32" width="32"><img src="004/gophertiles_167.jpg" height="32" width="32"><img src="004/gophertiles_082.jpg" height="32" width="32"><img src="004/gophertiles_056.jpg" height="32" width="32"><img src="004/gophertiles_180.jpg" height="32" width="32"><img src="004/gophertiles_046.jpg" height="32" width="32"><img src="004/gophertiles_093.jpg" height="32" width="32"><img src="004/gophertiles_106.jpg" height="32" width="32"><img src="004/gophertiles_065.jpg" height="32" width="32"><img src="004/gophertiles_175.jpg" height="32" width="32"><img src="004/gophertiles_139.jpg" height="32" width="32"><img src="004/gophertiles_101.jpg" height="32" width="32"><img src="004/gophertiles_099.jpg" height="32" width="32"><img src="004/gophertiles_051.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_140.jpg" height="32" width="32"><img src="004/gophertiles_134.jpg" height="32" width="32"><img src="004/gophertiles_149.jpg" height="32" width="32"><img src="004/gophertiles_049.jpg" height="32" width="32"><img src="004/gophertiles_095.jpg" height="32" width="32"><img src="004/gophertiles_075.jpg" height="32" width="32"><img src="004/gophertiles_066.jpg" height="32" width="32"><img src="004/gophertiles_090.jpg" height="32" width="32"><img src="004/gophertiles_035.jpg" height="32" width="32"><img src="004/gophertiles_114.jpg" height="32" width="32"><img src="004/gophertiles_160.jpg" height="32" width="32"><img src="004/gophertiles_079.jpg" height="32" width="32"><img src="004/gophertiles_062.jpg" height="32" width="32"><img src="004/gophertiles_096.jpg" height="32" width="32"><img src="004/gophertiles_100.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_104.jpg" height="32" width="32"><img src="004/gophertiles_057.jpg" height="32" width="32"><img src="004/gophertiles_037.jpg" height="32" width="32"><img src="004/gophertiles_086.jpg" height="32" width="32"><img src="004/gophertiles_168.jpg" height="32" width="32"><img src="004/gophertiles_138.jpg" height="32" width="32"><img src="004/gophertiles_045.jpg" height="32" width="32"><img src="004/gophertiles_141.jpg" height="32" width="32"><img src="004/gophertiles_029.jpg" height="32" width="32"><img src="004/gophertiles_165.jpg" height="32" width="32"><img src="004/gophertiles_110.jpg" height="32" width="32"><img src="004/gophertiles_063.jpg" height="32" width="32"><img src="004/gophertiles_158.jpg" height="32" width="32"><img src="004/gophertiles_122.jpg" height="32" width="32"><img src="004/gophertiles_068.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_170.jpg" height="32" width="32"><img src="004/gophertiles_120.jpg" height="32" width="32"><img src="004/gophertiles_117.jpg" height="32" width="32"><img src="004/gophertiles_031.jpg" height="32" width="32"><img src="004/gophertiles_113.jpg" height="32" width="32"><img src="004/gophertiles_074.jpg" height="32" width="32"><img src="004/gophertiles_129.jpg" height="32" width="32"><img src="004/gophertiles_019.jpg" height="32" width="32"><img src="004/gophertiles_060.jpg" height="32" width="32"><img src="004/gophertiles_109.jpg" height="32" width="32"><img src="004/gophertiles_080.jpg" height="32" width="32"><img src="004/gophertiles_097.jpg" height="32" width="32"><img src="004/gophertiles_116.jpg" height="32" width="32"><img src="004/gophertiles_085.jpg" height="32" width="32"><img src="004/gophertiles_050.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_151.jpg" height="32" width="32"><img src="004/gophertiles_094.jpg" height="32" width="32"><img src="004/gophertiles_067.jpg" height="32" width="32"><img src="004/gophertiles_128.jpg" height="32" width="32"><img src="004/gophertiles_034.jpg" height="32" width="32"><img src="004/gophertiles_135.jpg" height="32" width="32"><img src="004/gophertiles_012.jpg" height="32" width="32"><img src="004/gophertiles_010.jpg" height="32" width="32"><img src="004/gophertiles_152.jpg" height="32" width="32"><img src="004/gophertiles_171.jpg" height="32" width="32"><img src="004/gophertiles_087.jpg" height="32" width="32"><img src="004/gophertiles_126.jpg" height="32" width="32"><img src="004/gophertiles_048.jpg" height="32" width="32"><img src="004/gophertiles_023.jpg" height="32" width="32"><img src="004/gophertiles_078.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_071.jpg" height="32" width="32"><img src="004/gophertiles_131.jpg" height="32" width="32"><img src="004/gophertiles_073.jpg" height="32" width="32"><img src="004/gophertiles_143.jpg" height="32" width="32"><img src="004/gophertiles_173.jpg" height="32" width="32"><img src="004/gophertiles_154.jpg" height="32" width="32"><img src="004/gophertiles_061.jpg" height="32" width="32"><img src="004/gophertiles_178.jpg" height="32" width="32"><img src="004/gophertiles_013.jpg" height="32" width="32"><img src="004/gophertiles_028.jpg" height="32" width="32"><img src="004/gophertiles_157.jpg" height="32" width="32"><img src="004/gophertiles_038.jpg" height="32" width="32"><img src="004/gophertiles_069.jpg" height="32" width="32"><img src="004/gophertiles_174.jpg" height="32" width="32"><img src="004/gophertiles_076.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_155.jpg" height="32" width="32"><img src="004/gophertiles_107.jpg" height="32" width="32"><img src="004/gophertiles_136.jpg" height="32" width="32"><img src="004/gophertiles_144.jpg" height="32" width="32"><img src="004/gophertiles_091.jpg" height="32" width="32"><img src="004/gophertiles_024.jpg" height="32" width="32"><img src="004/gophertiles_014.jpg" height="32" width="32"><img src="004/gophertiles_159.jpg" height="32" width="32"><img src="004/gophertiles_011.jpg" height="32" width="32"><img src="004/gophertiles_176.jpg" height="32" width="32"><img src="004/gophertiles_162.jpg" height="32" width="32"><img src="004/gophertiles_156.jpg" height="32" width="32"><img src="004/gophertiles_081.jpg" height="32" width="32"><img src="004/gophertiles_119.jpg" height="32" width="32"><img src="004/gophertiles_026.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_133.jpg" height="32" width="32"><img src="004/gophertiles_020.jpg" height="32" width="32"><img src="004/gophertiles_044.jpg" height="32" width="32"><img src="004/gophertiles_125.jpg" height="32" width="32"><img src="004/gophertiles_150.jpg" height="32" width="32"><img src="004/gophertiles_172.jpg" height="32" width="32"><img src="004/gophertiles_002.jpg" height="32" width="32"><img src="004/gophertiles_169.jpg" height="32" width="32"><img src="004/gophertiles_007.jpg" height="32" width="32"><img src="004/gophertiles_008.jpg" height="32" width="32"><img src="004/gophertiles_042.jpg" height="32" width="32"><img src="004/gophertiles_041.jpg" height="32" width="32"><img src="004/gophertiles_166.jpg" height="32" width="32"><img src="004/gophertiles_005.jpg" height="32" width="32"><img src="004/gophertiles_089.jpg" height="32" width="32"><br>
- <img src="004/gophertiles_177.jpg" height="32" width="32"><img src="004/gophertiles_092.jpg" height="32" width="32"><img src="004/gophertiles_043.jpg" height="32" width="32"><img src="004/gophertiles_111.jpg" height="32" width="32"><img src="004/gophertiles_047.jpg" height="32" width="32"><img src="004/gophertiles.jpg" height="32" width="32"><img src="004/gophertiles_006.jpg" height="32" width="32"><img src="004/gophertiles_121.jpg" height="32" width="32"><img src="004/gophertiles_004.jpg" height="32" width="32"><img src="004/gophertiles_124.jpg" height="32" width="32"><img src="004/gophertiles_123.jpg" height="32" width="32"><img src="004/gophertiles_112.jpg" height="32" width="32"><img src="004/gophertiles_040.jpg" height="32" width="32"><img src="004/gophertiles_164.jpg" height="32" width="32"><img src="004/gophertiles_003.jpg" height="32" width="32"><br>
- <hr>This page is developed using this template:<a href="https://http2.golang.org/">HTTP/2 demo server</a>
- </p>
- </body>
-</html> \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles.jpg
deleted file mode 100755
index e45ac3b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_002.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_002.jpg
deleted file mode 100755
index 91121de..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_002.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_003.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_003.jpg
deleted file mode 100755
index a26648f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_003.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_004.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_004.jpg
deleted file mode 100755
index 1d2db98..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_004.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_005.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_005.jpg
deleted file mode 100755
index 05a298c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_005.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_006.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_006.jpg
deleted file mode 100755
index 54a4920..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_006.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_007.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_007.jpg
deleted file mode 100755
index 526f850..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_007.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_008.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_008.jpg
deleted file mode 100755
index 35f5a2f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_008.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_009.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_009.jpg
deleted file mode 100755
index 96ec2b8..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_009.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_010.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_010.jpg
deleted file mode 100755
index 95a9509..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_010.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_011.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_011.jpg
deleted file mode 100755
index 65701ed..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_011.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_012.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_012.jpg
deleted file mode 100755
index 6242fa6..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_012.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_013.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_013.jpg
deleted file mode 100755
index 8096ab2..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_013.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_014.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_014.jpg
deleted file mode 100755
index e027312..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_014.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_015.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_015.jpg
deleted file mode 100755
index a27076d..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_015.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_016.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_016.jpg
deleted file mode 100755
index 04b20db..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_016.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_017.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_017.jpg
deleted file mode 100755
index 9b6e44b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_017.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_018.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_018.jpg
deleted file mode 100755
index 209b6fd..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_018.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_019.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_019.jpg
deleted file mode 100755
index 3bc23a3..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_019.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_020.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_020.jpg
deleted file mode 100755
index ba04297..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_020.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_021.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_021.jpg
deleted file mode 100755
index f5a422f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_021.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_022.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_022.jpg
deleted file mode 100755
index cb49051..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_022.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_023.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_023.jpg
deleted file mode 100755
index 7e83a7e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_023.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_024.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_024.jpg
deleted file mode 100755
index 87c711b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_024.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_025.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_025.jpg
deleted file mode 100755
index c42eb3c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_025.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_026.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_026.jpg
deleted file mode 100755
index 29f9da6..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_026.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_027.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_027.jpg
deleted file mode 100755
index 6ceccde..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_027.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_028.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_028.jpg
deleted file mode 100755
index 6e3cb34..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_028.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_029.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_029.jpg
deleted file mode 100755
index dac302b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_029.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_030.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_030.jpg
deleted file mode 100755
index 4299071..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_030.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_031.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_031.jpg
deleted file mode 100755
index 739924f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_031.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_032.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_032.jpg
deleted file mode 100755
index 4685513..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_032.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_033.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_033.jpg
deleted file mode 100755
index 26ea0e1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_033.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_034.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_034.jpg
deleted file mode 100755
index f02930e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_034.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_035.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_035.jpg
deleted file mode 100755
index 8b6bde8..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_035.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_036.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_036.jpg
deleted file mode 100755
index 23ac1c0..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_036.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_037.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_037.jpg
deleted file mode 100755
index 6de6681..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_037.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_038.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_038.jpg
deleted file mode 100755
index aea11a3..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_038.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_039.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_039.jpg
deleted file mode 100755
index bb54d13..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_039.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_040.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_040.jpg
deleted file mode 100755
index 91591af..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_040.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_041.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_041.jpg
deleted file mode 100755
index 96b13dd..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_041.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_042.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_042.jpg
deleted file mode 100755
index 0ef80f1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_042.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_043.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_043.jpg
deleted file mode 100755
index c3828a7..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_043.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_044.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_044.jpg
deleted file mode 100755
index 036ec10..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_044.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_045.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_045.jpg
deleted file mode 100755
index 03f5413..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_045.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_046.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_046.jpg
deleted file mode 100755
index 8353e24..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_046.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_047.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_047.jpg
deleted file mode 100755
index 86e4d88..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_047.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_048.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_048.jpg
deleted file mode 100755
index 8f308ed..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_048.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_049.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_049.jpg
deleted file mode 100755
index bf22844..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_049.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_050.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_050.jpg
deleted file mode 100755
index 65addde..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_050.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_051.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_051.jpg
deleted file mode 100755
index aabb52b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_051.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_052.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_052.jpg
deleted file mode 100755
index 3d4bad8..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_052.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_053.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_053.jpg
deleted file mode 100755
index d30c4d0..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_053.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_054.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_054.jpg
deleted file mode 100755
index c27a34c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_054.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_055.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_055.jpg
deleted file mode 100755
index bac6e3f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_055.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_056.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_056.jpg
deleted file mode 100755
index 246624e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_056.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_057.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_057.jpg
deleted file mode 100755
index 0122037..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_057.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_058.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_058.jpg
deleted file mode 100755
index 71f602f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_058.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_059.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_059.jpg
deleted file mode 100755
index 78b0dd1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_059.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_060.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_060.jpg
deleted file mode 100755
index b2c699c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_060.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_061.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_061.jpg
deleted file mode 100755
index 082fe53..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_061.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_062.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_062.jpg
deleted file mode 100755
index 9b3bd8a..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_062.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_063.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_063.jpg
deleted file mode 100755
index 34bbfc5..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_063.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_064.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_064.jpg
deleted file mode 100755
index ac0ddc7..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_064.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_065.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_065.jpg
deleted file mode 100755
index f85dce5..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_065.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_066.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_066.jpg
deleted file mode 100755
index 616dd5c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_066.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_067.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_067.jpg
deleted file mode 100755
index bbbaecf..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_067.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_068.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_068.jpg
deleted file mode 100755
index d0b6a18..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_068.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_069.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_069.jpg
deleted file mode 100755
index 27e1abc..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_069.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_070.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_070.jpg
deleted file mode 100755
index de1a15e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_070.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_071.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_071.jpg
deleted file mode 100755
index 40912e3..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_071.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_072.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_072.jpg
deleted file mode 100755
index ef01d06..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_072.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_073.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_073.jpg
deleted file mode 100755
index 3298be7..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_073.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_074.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_074.jpg
deleted file mode 100755
index 28fb75c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_074.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_075.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_075.jpg
deleted file mode 100755
index 1f70c5e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_075.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_076.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_076.jpg
deleted file mode 100755
index d929f53..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_076.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_077.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_077.jpg
deleted file mode 100755
index 49c8ca1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_077.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_078.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_078.jpg
deleted file mode 100755
index a21dd87..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_078.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_079.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_079.jpg
deleted file mode 100755
index bfbd4c2..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_079.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_080.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_080.jpg
deleted file mode 100755
index 6ff068c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_080.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_081.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_081.jpg
deleted file mode 100755
index dd615c7..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_081.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_082.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_082.jpg
deleted file mode 100755
index 0c28382..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_082.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_083.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_083.jpg
deleted file mode 100755
index 5512c16..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_083.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_084.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_084.jpg
deleted file mode 100755
index d08ac7b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_084.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_085.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_085.jpg
deleted file mode 100755
index c098f72..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_085.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_086.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_086.jpg
deleted file mode 100755
index 203e41d..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_086.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_087.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_087.jpg
deleted file mode 100755
index b664135..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_087.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_088.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_088.jpg
deleted file mode 100755
index e211d21..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_088.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_089.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_089.jpg
deleted file mode 100755
index 00c4730..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_089.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_090.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_090.jpg
deleted file mode 100755
index 7203f10..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_090.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_091.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_091.jpg
deleted file mode 100755
index f57baa9..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_091.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_092.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_092.jpg
deleted file mode 100755
index cba16c6..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_092.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_093.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_093.jpg
deleted file mode 100755
index 6d4c1a5..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_093.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_094.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_094.jpg
deleted file mode 100755
index a5f6a2a..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_094.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_095.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_095.jpg
deleted file mode 100755
index d213fe5..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_095.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_096.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_096.jpg
deleted file mode 100755
index 0fd51eb..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_096.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_097.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_097.jpg
deleted file mode 100755
index 2b706cc..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_097.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_098.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_098.jpg
deleted file mode 100755
index 7861f2a..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_098.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_099.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_099.jpg
deleted file mode 100755
index be10042..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_099.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_100.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_100.jpg
deleted file mode 100755
index 8687873..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_100.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_101.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_101.jpg
deleted file mode 100755
index fe4b56a..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_101.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_102.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_102.jpg
deleted file mode 100755
index d888f6c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_102.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_103.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_103.jpg
deleted file mode 100755
index 4ebf13d..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_103.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_104.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_104.jpg
deleted file mode 100755
index b4dc051..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_104.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_105.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_105.jpg
deleted file mode 100755
index 4f3c5a1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_105.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_106.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_106.jpg
deleted file mode 100755
index 51d6742..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_106.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_107.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_107.jpg
deleted file mode 100755
index ef986b7..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_107.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_108.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_108.jpg
deleted file mode 100755
index 8901141..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_108.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_109.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_109.jpg
deleted file mode 100755
index a946a2b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_109.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_110.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_110.jpg
deleted file mode 100755
index 35d542c..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_110.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_111.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_111.jpg
deleted file mode 100755
index 0ec9641..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_111.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_112.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_112.jpg
deleted file mode 100755
index 530739a..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_112.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_113.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_113.jpg
deleted file mode 100755
index 0537d7f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_113.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_114.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_114.jpg
deleted file mode 100755
index 9ecb936..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_114.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_115.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_115.jpg
deleted file mode 100755
index 221e6f4..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_115.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_116.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_116.jpg
deleted file mode 100755
index 0de1084..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_116.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_117.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_117.jpg
deleted file mode 100755
index 8ebd1ea..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_117.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_118.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_118.jpg
deleted file mode 100755
index 246d055..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_118.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_119.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_119.jpg
deleted file mode 100755
index 8d92e15..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_119.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_120.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_120.jpg
deleted file mode 100755
index 8ebef73..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_120.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_121.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_121.jpg
deleted file mode 100755
index e7a3772..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_121.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_122.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_122.jpg
deleted file mode 100755
index 6a57fc8..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_122.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_123.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_123.jpg
deleted file mode 100755
index b941523..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_123.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_124.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_124.jpg
deleted file mode 100755
index 9dddf38..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_124.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_125.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_125.jpg
deleted file mode 100755
index d2e479e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_125.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_126.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_126.jpg
deleted file mode 100755
index 32fc518..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_126.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_127.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_127.jpg
deleted file mode 100755
index c5f71cc..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_127.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_128.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_128.jpg
deleted file mode 100755
index d899e3d..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_128.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_129.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_129.jpg
deleted file mode 100755
index 3508872..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_129.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_130.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_130.jpg
deleted file mode 100755
index b26d716..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_130.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_131.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_131.jpg
deleted file mode 100755
index 56a27d4..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_131.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_132.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_132.jpg
deleted file mode 100755
index b34a2f0..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_132.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_133.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_133.jpg
deleted file mode 100755
index b5dc4da..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_133.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_134.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_134.jpg
deleted file mode 100755
index 24d6866..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_134.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_135.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_135.jpg
deleted file mode 100755
index f0c27c8..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_135.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_136.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_136.jpg
deleted file mode 100755
index d3b3b28..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_136.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_137.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_137.jpg
deleted file mode 100755
index 7e78d35..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_137.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_138.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_138.jpg
deleted file mode 100755
index 5a0024e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_138.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_139.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_139.jpg
deleted file mode 100755
index e0e16bc..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_139.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_140.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_140.jpg
deleted file mode 100755
index b9c54c4..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_140.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_141.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_141.jpg
deleted file mode 100755
index f62eada..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_141.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_142.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_142.jpg
deleted file mode 100755
index 6085722..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_142.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_143.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_143.jpg
deleted file mode 100755
index f533fe5..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_143.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_144.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_144.jpg
deleted file mode 100755
index bcc5602..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_144.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_145.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_145.jpg
deleted file mode 100755
index 3b9402e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_145.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_146.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_146.jpg
deleted file mode 100755
index f2f049b..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_146.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_147.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_147.jpg
deleted file mode 100755
index 06fc738..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_147.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_148.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_148.jpg
deleted file mode 100755
index e094d96..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_148.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_149.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_149.jpg
deleted file mode 100755
index 26ab8d7..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_149.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_150.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_150.jpg
deleted file mode 100755
index 02ca417..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_150.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_151.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_151.jpg
deleted file mode 100755
index 78fe841..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_151.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_152.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_152.jpg
deleted file mode 100755
index 9cfa47a..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_152.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_153.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_153.jpg
deleted file mode 100755
index 0a67731..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_153.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_154.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_154.jpg
deleted file mode 100755
index 9a38955..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_154.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_155.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_155.jpg
deleted file mode 100755
index 5a10b47..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_155.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_156.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_156.jpg
deleted file mode 100755
index 809d5f9..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_156.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_157.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_157.jpg
deleted file mode 100755
index 8c852e2..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_157.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_158.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_158.jpg
deleted file mode 100755
index 5ef80f7..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_158.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_159.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_159.jpg
deleted file mode 100755
index 2fe485f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_159.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_160.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_160.jpg
deleted file mode 100755
index 072cfc6..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_160.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_161.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_161.jpg
deleted file mode 100755
index cd66e83..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_161.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_162.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_162.jpg
deleted file mode 100755
index 6af87e8..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_162.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_163.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_163.jpg
deleted file mode 100755
index 1a903c3..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_163.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_164.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_164.jpg
deleted file mode 100755
index 71694cf..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_164.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_165.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_165.jpg
deleted file mode 100755
index 084c64a..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_165.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_166.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_166.jpg
deleted file mode 100755
index 6554740..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_166.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_167.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_167.jpg
deleted file mode 100755
index ef2d248..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_167.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_168.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_168.jpg
deleted file mode 100755
index fda5636..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_168.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_169.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_169.jpg
deleted file mode 100755
index 7b53b20..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_169.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_170.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_170.jpg
deleted file mode 100755
index 271c69d..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_170.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_171.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_171.jpg
deleted file mode 100755
index a52ac34..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_171.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_172.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_172.jpg
deleted file mode 100755
index 7438a7e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_172.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_173.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_173.jpg
deleted file mode 100755
index d91d538..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_173.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_174.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_174.jpg
deleted file mode 100755
index 3901ca5..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_174.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_175.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_175.jpg
deleted file mode 100755
index 106900d..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_175.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_176.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_176.jpg
deleted file mode 100755
index c4a54bf..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_176.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_177.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_177.jpg
deleted file mode 100755
index d214f26..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_177.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_178.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_178.jpg
deleted file mode 100755
index be6cb55..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_178.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_179.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_179.jpg
deleted file mode 100755
index 516faa1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_179.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_180.jpg b/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_180.jpg
deleted file mode 100755
index 67bf870..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/004/gophertiles_180.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/006.html b/debian/perl-framework/t/htdocs/modules/h2/006.html
deleted file mode 100755
index 6b73025..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/006.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML>
- <html>
- <head>
- <title>HTML/2.0 Test File: 006</title>
- <link rel="stylesheet" type="text/css" href="006/006.css">
- <script type="text/javascript" src="006/006.js"></script>
- </head>
- <body>
- <h1>HTML/2.0 Test File: 006</h1>
- <div class="listTitle">This page contains:
- <ul class="listElements">
- <li>HTML
- <li>CSS
- <li>JavaScript
- </ul>
- </div>
- <div class="listTitle">
- <script type="text/javascript">
- mainJavascript();
- </script>
- </div>
- </body>
-</html> \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/006/006.css b/debian/perl-framework/t/htdocs/modules/h2/006/006.css
deleted file mode 100755
index de6aa5f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/006/006.css
+++ /dev/null
@@ -1,21 +0,0 @@
-@CHARSET "ISO-8859-1";
-body{
- background:HoneyDew;
-}
-p{
-color:#0000FF;
-text-align:left;
-}
-
-h1{
-color:#FF0000;
-text-align:center;
-}
-
-.listTitle{
- font-size:large;
-}
-
-.listElements{
- color:#3366FF
-} \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/006/006.js b/debian/perl-framework/t/htdocs/modules/h2/006/006.js
deleted file mode 100755
index b450067..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/006/006.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * JavaScript Functions File
- */
-function returnDate()
-{
- var currentDate;
- currentDate=new Date();
- var dateString=(currentDate.getMonth()+1)+'/'+currentDate.getDate()+'/'+currentDate.getFullYear();
- return dateString;
-}
-
-function returnHour()
-{
- var currentDate;
- currentDate=new Date();
- var hourString=currentDate.getHours()+':'+currentDate.getMinutes()+':'+currentDate.getSeconds();
- return hourString;
-}
-
-function javaScriptMessage(){
- return 'This section is generated under JavaScript:<br>';
-}
-
-function mainJavascript(){
- document.write(javaScriptMessage())
- document.write('<ul class="listElements">');
- document.write('<li>Current date (dd/mm/yyyy): ' + returnDate());
- document.write('<br>');
- document.write('<li>Current time (hh:mm:ss): '+returnHour());
- document.write('</ul>');
-} \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/007.html b/debian/perl-framework/t/htdocs/modules/h2/007.html
deleted file mode 100755
index 4db93e4..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/007.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="ISO-8859-1">
-<title>HTML/2.0 Test File: 007</title>
-</head>
-<body>
- <h1>HTML/2.0 Test File: 007</h1>
- <div><p>This page is used to send data from the client to the server:</p>
- <FORM ACTION="007/007.py" METHOD="post" ENCTYPE="multipart/form-data">
- <input type="hidden" name="pageName" value="007.html">
- Name:<input type="text" name="pName" value="Write your name here." size="30" maxlength="30"><br>
- Age:<input type="text" name="pAge" value="00" size="2" maxlength="2"><br>
- Gender: Male<input type="radio" name="pGender" VALUE="Male">
- Female<input type="radio" name="pGender" VALUE="Female"><br>
- <input type="submit" name="userForm" value="Send">
- <input type="reset" value="Clear">
- </FORM>
- </div>
-</body>
-</html> \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/007/007.py b/debian/perl-framework/t/htdocs/modules/h2/007/007.py
deleted file mode 100755
index 02b5466..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/007/007.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-import cgi, sys
-import cgitb; cgitb.enable()
-
-print "Content-Type: text/html;charset=UTF-8"
-print
-
-print """\
- <!DOCTYPE html><html><head>
- <title>HTML/2.0 Test File: 007 (received data)</title></head>
- <body><h1>HTML/2.0 Test File: 007</h1>"""
-
-# alternative output: parsed form params <-> plain POST body
-parseContent = True # <-> False
-
-if parseContent:
- print '<h2>Data processed:</h2><ul>'
- form = cgi.FieldStorage()
- for name in form:
- print '<li>', name, ': ', form[name].value, '</li>'
- print '</ul>'
-else:
- print '<h2>POST data output:</h2><div><pre>'
- data = sys.stdin.read()
- print data
- print '</pre></div>'
-
-print '</body></html>' \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/009.py b/debian/perl-framework/t/htdocs/modules/h2/009.py
deleted file mode 100755
index 8fd9095..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/009.py
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-import cgi, sys, time
-import cgitb; cgitb.enable()
-
-print "Content-Type: text/html;charset=UTF-8"
-print
-
-print """\
- <!DOCTYPE html><html><head>
- <title>HTML/2.0 Test File: 009 (server time)</title></head>
- <body><h1>HTML/2.0 Test File: 009</h1>
- <p>60 seconds of server time, one by one.</p>"""
-
-for i in range(60):
- s = time.strftime("%Y-%m-%d %H:%M:%S")
- print "<div>", s, "</div>"
- sys.stdout.flush()
- time.sleep(1)
-
-print "<p>done.</p></body></html>" \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/hello.pl b/debian/perl-framework/t/htdocs/modules/h2/hello.pl
deleted file mode 100755
index 688b102..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/hello.pl
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env perl
-
-use Env;
-
-print "Content-Type: text/html\n";
-print "\n";
-
-#my $ssl_protocol = $ENV{'SSL_TLS_SNI'};
-print <<EOF
-<html><body>
-<h2>Hello World!</h2>
-</body></html>
-EOF
diff --git a/debian/perl-framework/t/htdocs/modules/h2/index.html b/debian/perl-framework/t/htdocs/modules/h2/index.html
deleted file mode 100644
index aa11d4f..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/index.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<html>
- <head>
- <title>mod_h2 test site</title>
- </head>
- <body>
- <h1>mod_h2 test site</h1>
- <p></p>
- <h2>served directly</h2>
- <ul>
- <li><a href="001.html">01: html</a></li>
- <li><a href="002.jpg">02: image</a></li>
- <li><a href="003.html">03: html+image</a></li>
- <li><a href="004.html">04: tiled image</a></li>
- <li><a href="005.txt">05: large text</a></li>
- <li><a href="006.html">06: html/js/css</a></li>
- <li><a href="007.html">07: form submit</a></li>
- <li><a href="upload.py">08: upload</a></li>
- <li><a href="009.py">09: small chunks</a></li>
- </ul>
- <h2>mod_proxyied</h2>
- <ul>
- <li><a href="proxy/001.html">01: html</a></li>
- <li><a href="proxy/002.jpg">02: image</a></li>
- <li><a href="proxy/003.html">03: html+image</a></li>
- <li><a href="proxy/004.html">04: tiled image</a></li>
- <li><a href="proxy/005.txt">05: large text</a></li>
- <li><a href="proxy/006.html">06: html/js/css</a></li>
- <li><a href="proxy/007.html">07: form submit</a></li>
- <li><a href="proxy/upload.py">08: upload</a></li>
- <li><a href="proxy/009.py">09: small chunks</a></li>
- </ul>
- <h2>mod_rewritten</h2>
- <ul>
- <li><a href="rewrite/001.html">01: html</a></li>
- <li><a href="rewrite/002.jpg">02: image</a></li>
- <li><a href="rewrite/003.html">03: html+image</a></li>
- <li><a href="rewrite/004.html">04: tiled image</a></li>
- <li><a href="rewrite/005.txt">05: large text</a></li>
- <li><a href="rewrite/006.html">06: html/js/css</a></li>
- <li><a href="rewrite/007.html">07: form submit</a></li>
- <li><a href="rewrite/upload.py">08: upload</a></li>
- <li><a href="rewrite/009.py">09: small chunks</a></li>
- </ul>
- </body>
-</html> \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/index.jpg b/debian/perl-framework/t/htdocs/modules/h2/index.jpg
deleted file mode 100755
index 246624e..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/index.jpg
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/h2/info.php b/debian/perl-framework/t/htdocs/modules/h2/info.php
deleted file mode 100644
index 640e4f2..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/info.php
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
- phpinfo();
-?> \ No newline at end of file
diff --git a/debian/perl-framework/t/htdocs/modules/h2/necho.pl b/debian/perl-framework/t/htdocs/modules/h2/necho.pl
deleted file mode 100755
index bc9b6c0..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/necho.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env perl
-
-use Env;
-
-my $query = $ENV{QUERY_STRING};
-
-if ($query) {
- $query =~ /count=([0-9]+)/;
- my $count = $1;
- $query =~ /text=([^&]+)/;
- my $text = $1;
-
- print "Status: 200\n";
- print "Content-Type: text/plain\n";
- print "\n";
- foreach my $i (1..$count) {
- print $text;
- }
-}
-else {
- print "Status: 400 Parameter Missing\n";
- print "Content-Type: text/plain\n";
- print "\n";
- print <<EOF;
-<html><body>
-<p>No query was specified.</p>
-</body></html>
-EOF
-}
diff --git a/debian/perl-framework/t/htdocs/modules/h2/upload.pl b/debian/perl-framework/t/htdocs/modules/h2/upload.pl
deleted file mode 100755
index 71880f1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/upload.pl
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python
-import cgi, os
-import cgitb; cgitb.enable()
-
-status = '200 Ok'
-
-try: # Windows needs stdio set for binary mode.
- import msvcrt
- msvcrt.setmode (0, os.O_BINARY) # stdin = 0
- msvcrt.setmode (1, os.O_BINARY) # stdout = 1
-except ImportError:
- pass
-
-form = cgi.FieldStorage()
-
-# Test if the file was uploaded
-if 'file' in form:
- # A nested FieldStorage instance holds the file
- fileitem = form['file']
-
- # strip leading path from file name to avoid directory traversal attacks
- fn = os.path.basename(fileitem.filename)
- open('./files/' + fn, 'wb').write(fileitem.file.read())
- message = 'The file "' + fn + '" was uploaded successfully'
-
-elif 'remove' in form:
- remove = form['remove'].value
- try:
- fn = os.path.basename(remove)
- os.remove('./files/' + fn)
- message = 'The file "' + fn + '" was removed successfully'
- except OSError, e:
- message = 'Error removing ' + fn + ': ' + e.strerror
- status = '404 File Not Found'
-else:
- message = '''\
- Upload File<form method="POST" enctype="multipart/form-data">
- <input type="file" name="file">
- <button type="submit">Upload</button></form>
- '''
-
-print "Status: %s" % (status,)
-print """\
- Content-Type: text/html\n
- <html><body>
- <p>%s</p>
- </body></html>""" % (message,)
diff --git a/debian/perl-framework/t/htdocs/modules/h2/upload.py b/debian/perl-framework/t/htdocs/modules/h2/upload.py
deleted file mode 100755
index 71880f1..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/upload.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python
-import cgi, os
-import cgitb; cgitb.enable()
-
-status = '200 Ok'
-
-try: # Windows needs stdio set for binary mode.
- import msvcrt
- msvcrt.setmode (0, os.O_BINARY) # stdin = 0
- msvcrt.setmode (1, os.O_BINARY) # stdout = 1
-except ImportError:
- pass
-
-form = cgi.FieldStorage()
-
-# Test if the file was uploaded
-if 'file' in form:
- # A nested FieldStorage instance holds the file
- fileitem = form['file']
-
- # strip leading path from file name to avoid directory traversal attacks
- fn = os.path.basename(fileitem.filename)
- open('./files/' + fn, 'wb').write(fileitem.file.read())
- message = 'The file "' + fn + '" was uploaded successfully'
-
-elif 'remove' in form:
- remove = form['remove'].value
- try:
- fn = os.path.basename(remove)
- os.remove('./files/' + fn)
- message = 'The file "' + fn + '" was removed successfully'
- except OSError, e:
- message = 'Error removing ' + fn + ': ' + e.strerror
- status = '404 File Not Found'
-else:
- message = '''\
- Upload File<form method="POST" enctype="multipart/form-data">
- <input type="file" name="file">
- <button type="submit">Upload</button></form>
- '''
-
-print "Status: %s" % (status,)
-print """\
- Content-Type: text/html\n
- <html><body>
- <p>%s</p>
- </body></html>""" % (message,)
diff --git a/debian/perl-framework/t/htdocs/modules/h2/xxx-1.0.2a.tar.gz b/debian/perl-framework/t/htdocs/modules/h2/xxx-1.0.2a.tar.gz
deleted file mode 100644
index f025d43..0000000
--- a/debian/perl-framework/t/htdocs/modules/h2/xxx-1.0.2a.tar.gz
+++ /dev/null
Binary files differ
diff --git a/debian/perl-framework/t/htdocs/modules/include/comment.shtml b/debian/perl-framework/t/htdocs/modules/include/comment.shtml
new file mode 100755
index 0000000..b278735
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/include/comment.shtml
@@ -0,0 +1,5 @@
+No
+<!--#comment blah blah blah ... -->
+comment
+<!--#comment blah blah blah ... -->
+here
diff --git a/debian/perl-framework/t/htdocs/modules/include/mod_request/echo.shtml b/debian/perl-framework/t/htdocs/modules/include/mod_request/echo.shtml
new file mode 100755
index 0000000..b211acf
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/include/mod_request/echo.shtml
@@ -0,0 +1 @@
+<!--#echo var="DOCUMENT_NAME" -->
diff --git a/debian/perl-framework/t/htdocs/modules/include/mod_request/post.shtml b/debian/perl-framework/t/htdocs/modules/include/mod_request/post.shtml
new file mode 100755
index 0000000..a6721e3
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/include/mod_request/post.shtml
@@ -0,0 +1 @@
+<!--#include virtual="/modules/cgi/perl_post.pl?$QUERY_STRING"-->
diff --git a/debian/perl-framework/t/htdocs/modules/lua/filters.lua b/debian/perl-framework/t/htdocs/modules/lua/filters.lua
new file mode 100644
index 0000000..4236ecc
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/lua/filters.lua
@@ -0,0 +1,16 @@
+--[[
+ Example output filter that escapes all HTML entities in the output
+]]--
+function output_filter(r)
+ coroutine.yield("prefix\n")
+ while bucket do -- For each bucket, do...
+ if string.len(bucket) > 0 then
+ local output = "bucket:" .. bucket .. "\n"
+ coroutine.yield(output) -- Send converted data down the chain
+ else
+ coroutine.yield("") -- Send converted data down the chain
+ end
+ end
+ coroutine.yield("suffix\n")
+ -- No more buckets available.
+end
diff --git a/debian/perl-framework/t/htdocs/modules/lua/websockets.lua b/debian/perl-framework/t/htdocs/modules/lua/websockets.lua
new file mode 100644
index 0000000..6e6d5ba
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/lua/websockets.lua
@@ -0,0 +1,18 @@
+function handle(r)
+if r:wsupgrade() then -- if we can upgrade:
+ while true do
+ local line, isFinal = r:wsread()
+ local len = string.len(line);
+ r:debug(string.format("writing line of len %d: %s", len, line))
+ if len >= 1024 then
+ r:debug("writing line ending in '" .. string.sub(line, -127, -1) .. "'")
+ end
+ r:wswrite(line)
+ if line == "quit" then
+ r:wsclose() -- goodbye!
+ break
+ end
+
+ end
+end
+end
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/de/compressed/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/de/compressed/index.html.zh-TW
new file mode 100755
index 0000000..453658e
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/de/compressed/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/de/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/de/index.html.zh-TW
new file mode 100755
index 0000000..f653cbe
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/de/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/de/two/index.zh-TW.html b/debian/perl-framework/t/htdocs/modules/negotiation/de/two/index.zh-TW.html
new file mode 100755
index 0000000..f4f6298
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/de/two/index.zh-TW.html
@@ -0,0 +1 @@
+index.zh-TW.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/de/two/map.var b/debian/perl-framework/t/htdocs/modules/negotiation/de/two/map.var
index 6b6abcf..1069a10 100644
--- a/debian/perl-framework/t/htdocs/modules/negotiation/de/two/map.var
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/de/two/map.var
@@ -15,3 +15,7 @@ Content-Language: fr
URI: index.fu.html
Content-Type: text/html
Content-Language: fu
+
+URI: index.zh-TW.html
+Content-Type: text/html
+Content-Language: zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/en/compressed/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/en/compressed/index.html.zh-TW
new file mode 100755
index 0000000..453658e
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/en/compressed/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/en/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/en/index.html.zh-TW
new file mode 100755
index 0000000..f653cbe
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/en/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/en/two/index.zh-TW.html b/debian/perl-framework/t/htdocs/modules/negotiation/en/two/index.zh-TW.html
new file mode 100755
index 0000000..f4f6298
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/en/two/index.zh-TW.html
@@ -0,0 +1 @@
+index.zh-TW.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/en/two/map.var b/debian/perl-framework/t/htdocs/modules/negotiation/en/two/map.var
index 6b6abcf..1069a10 100644
--- a/debian/perl-framework/t/htdocs/modules/negotiation/en/two/map.var
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/en/two/map.var
@@ -15,3 +15,7 @@ Content-Language: fr
URI: index.fu.html
Content-Type: text/html
Content-Language: fu
+
+URI: index.zh-TW.html
+Content-Type: text/html
+Content-Language: zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fr/compressed/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/fr/compressed/index.html.zh-TW
new file mode 100755
index 0000000..453658e
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fr/compressed/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fr/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/fr/index.html.zh-TW
new file mode 100755
index 0000000..f653cbe
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fr/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fr/two/index.zh-TW.html b/debian/perl-framework/t/htdocs/modules/negotiation/fr/two/index.zh-TW.html
new file mode 100755
index 0000000..f4f6298
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fr/two/index.zh-TW.html
@@ -0,0 +1 @@
+index.zh-TW.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fr/two/map.var b/debian/perl-framework/t/htdocs/modules/negotiation/fr/two/map.var
index 6b6abcf..1069a10 100644
--- a/debian/perl-framework/t/htdocs/modules/negotiation/fr/two/map.var
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fr/two/map.var
@@ -15,3 +15,7 @@ Content-Language: fr
URI: index.fu.html
Content-Type: text/html
Content-Language: fu
+
+URI: index.zh-TW.html
+Content-Type: text/html
+Content-Language: zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fu/compressed/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/fu/compressed/index.html.zh-TW
new file mode 100755
index 0000000..453658e
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fu/compressed/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fu/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/fu/index.html.zh-TW
new file mode 100755
index 0000000..f653cbe
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fu/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fu/two/index.zh-TW.html b/debian/perl-framework/t/htdocs/modules/negotiation/fu/two/index.zh-TW.html
new file mode 100755
index 0000000..f4f6298
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fu/two/index.zh-TW.html
@@ -0,0 +1 @@
+index.zh-TW.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/fu/two/map.var b/debian/perl-framework/t/htdocs/modules/negotiation/fu/two/map.var
index 6b6abcf..1069a10 100644
--- a/debian/perl-framework/t/htdocs/modules/negotiation/fu/two/map.var
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/fu/two/map.var
@@ -15,3 +15,7 @@ Content-Language: fr
URI: index.fu.html
Content-Type: text/html
Content-Language: fu
+
+URI: index.zh-TW.html
+Content-Type: text/html
+Content-Language: zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.de b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.de
new file mode 100755
index 0000000..555bd83
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.de
@@ -0,0 +1 @@
+index.html.de.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.en b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.en
new file mode 100755
index 0000000..b0d750c
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.en
@@ -0,0 +1 @@
+index.html.en.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fr b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fr
new file mode 100755
index 0000000..3a8b0bd
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fr
@@ -0,0 +1 @@
+index.html.fr.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fu b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fu
new file mode 100755
index 0000000..c0b85df
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.fu
@@ -0,0 +1 @@
+index.html.fu.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.zh-TW
new file mode 100755
index 0000000..453658e
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/compressed/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW.gz
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.de b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.de
new file mode 100755
index 0000000..1d9a5e8
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.de
@@ -0,0 +1 @@
+index.html.de
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.en b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.en
new file mode 100755
index 0000000..d288e3c
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.en
@@ -0,0 +1 @@
+index.html.en
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fr b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fr
new file mode 100755
index 0000000..e739edd
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fr
@@ -0,0 +1 @@
+index.html.fr
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fu b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fu
new file mode 100755
index 0000000..c0b6f1f
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.fu
@@ -0,0 +1 @@
+index.html.fu
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.zh-TW b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.zh-TW
new file mode 100755
index 0000000..f653cbe
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/index.html.zh-TW
@@ -0,0 +1 @@
+index.html.zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.de.html b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.de.html
new file mode 100755
index 0000000..075f6bc
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.de.html
@@ -0,0 +1 @@
+index.de.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.en.html b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.en.html
new file mode 100755
index 0000000..35c0623
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.en.html
@@ -0,0 +1 @@
+index.en.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fr.html b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fr.html
new file mode 100755
index 0000000..8c756a7
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fr.html
@@ -0,0 +1 @@
+index.fr.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fu.html b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fu.html
new file mode 100755
index 0000000..72eb5ef
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.fu.html
@@ -0,0 +1 @@
+index.fu.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.zh-TW.html b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.zh-TW.html
new file mode 100755
index 0000000..f4f6298
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/index.zh-TW.html
@@ -0,0 +1 @@
+index.zh-TW.html
diff --git a/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/map.var b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/map.var
new file mode 100755
index 0000000..1069a10
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/negotiation/zh-TW/two/map.var
@@ -0,0 +1,21 @@
+URI: index.html
+
+URI: index.en.html
+Content-Type: text/html
+Content-Language: en
+
+URI: index.de.html
+Content-Type: text/html
+Content-Language: de
+
+URI: index.fr.html
+Content-Type: text/html
+Content-Language: fr
+
+URI: index.fu.html
+Content-Type: text/html
+Content-Language: fu
+
+URI: index.zh-TW.html
+Content-Type: text/html
+Content-Language: zh-TW
diff --git a/debian/perl-framework/t/htdocs/modules/substitute/.empty b/debian/perl-framework/t/htdocs/modules/substitute/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/substitute/.empty
diff --git a/debian/perl-framework/t/htdocs/modules/xml2enc/doc.fooxml b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.fooxml
new file mode 100644
index 0000000..612ba3c
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.fooxml
@@ -0,0 +1 @@
+fóó
diff --git a/debian/perl-framework/t/htdocs/modules/xml2enc/doc.isohtml b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.isohtml
new file mode 100644
index 0000000..9a07943
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.isohtml
@@ -0,0 +1 @@
+fóó
diff --git a/debian/perl-framework/t/htdocs/modules/xml2enc/doc.notxml b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.notxml
new file mode 100644
index 0000000..9a07943
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.notxml
@@ -0,0 +1 @@
+fóó
diff --git a/debian/perl-framework/t/htdocs/modules/xml2enc/doc.xml b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.xml
new file mode 100644
index 0000000..612ba3c
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/modules/xml2enc/doc.xml
@@ -0,0 +1 @@
+fóó
diff --git a/debian/perl-framework/t/htdocs/servlet/mapping.html b/debian/perl-framework/t/htdocs/servlet/mapping.html
new file mode 100644
index 0000000..f0b7bc7
--- /dev/null
+++ b/debian/perl-framework/t/htdocs/servlet/mapping.html
@@ -0,0 +1 @@
+hello servlet
diff --git a/debian/perl-framework/t/modules/actions.t b/debian/perl-framework/t/modules/actions.t
new file mode 100644
index 0000000..337d4d8
--- /dev/null
+++ b/debian/perl-framework/t/modules/actions.t
@@ -0,0 +1,59 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil;
+
+##
+## mod_action tests
+##
+my @tests_action = (
+ [ "mod_actions/", 200, "nada"], # Handler for this location
+
+ [ "modules/actions/action/test.xyz", 404], # No handler for .xyz
+ [ "modules/actions/action/test.xyz1", 404], # Handler for .xyz1, but not virtual
+ [ "modules/actions/action/test.xyz22", 404], # No Handler for .xyz2x (but one for .xyz2)
+
+ [ "modules/actions/action/test.xyz2", 200, "nada"], # Handler for .xyz2, and virtual
+);
+
+my @tests_script = (
+ [ "modules/actions/script/test.x", 404],
+ [ "modules/actions/script/test.x?foo=bar", 200, "foo=bar"],
+);
+
+my $r;
+
+plan tests => scalar @tests_action*2 + scalar @tests_script*(2+2+1), need_module('mod_actions');
+
+foreach my $test (@tests_action) {
+ $r = GET($test->[0]);
+ ok t_cmp($r->code, $test->[1]);
+ if ($test->[1] == 200) {
+ ok t_cmp($r->content, $test->[2]);
+ }
+ else {
+ skip "RC=404, no need to check content", 1;
+ }
+}
+
+foreach my $test (@tests_script) {
+ $r = GET($test->[0]);
+ ok t_cmp($r->code, $test->[1]);
+ if ($test->[1] == 200) {
+ ok t_cmp($r->content, $test->[2]);
+ }
+ else {
+ skip "RC=404, no need to check content", 1;
+ }
+
+ $r = POST($test->[0], content => "foo2=bar2");
+ ok t_cmp($r->code, 200);
+ ok t_cmp($r->content, "POST\nfoo2: bar2\n");
+
+ # Method not allowed
+ $r = PUT($test->[0], content => "foo2=bar2");
+ ok t_cmp($r->code, 405);
+}
+
diff --git a/debian/perl-framework/t/modules/alias.t b/debian/perl-framework/t/modules/alias.t
index a605966..957fccc 100644
--- a/debian/perl-framework/t/modules/alias.t
+++ b/debian/perl-framework/t/modules/alias.t
@@ -35,6 +35,14 @@ my %rm_rc = (
f => '403'
);
+
+my %relative_redirects = (
+ "/redirect_relative/default" => "^http", # URL should be absolute
+ "/redirect_relative/on" => "^/out-on", # URL should be relative
+ "/redirect_relative/off" => "^http", # URL should be absolute
+ "/redirect_relative/off/fail" => undef, # 500 due to invalid URL
+);
+
#XXX: find something that'll on other platforms (/bin/sh aint it)
my $script_tests = WINFU ? 0 : 4 + have_min_apache_version("2.4.19");
@@ -44,6 +52,10 @@ my $tests = 12 + have_min_apache_version("2.4.19") * 10 +
(keys %rm_rc) * (1 + have_min_apache_version("2.4.19")) * 10 +
$script_tests;
+if (have_min_apache_version("2.5.1")) {
+ $tests += (keys %relative_redirects)*2;
+}
+
#LWP required to follow redirects
plan tests => $tests, need need_module('alias'), need_lwp;
@@ -207,3 +219,22 @@ ok t_cmp((GET_RC "/aliascgi-nada"),
## clean up ##
t_rmtree("$vars->{t_logs}/mod_cgi.log");
+
+
+if (have_min_apache_version("2.5.1")) {
+ my ($path, $regex);
+ while (($path, $regex) = each (%relative_redirects)) {
+ local $Apache::TestRequest::RedirectOK = 0;
+ my $r;
+ $r = GET($path);
+ if (defined($regex)) {
+ ok t_cmp($r->code, "302");
+ ok t_cmp($r->header("Location"), qr/$regex/, "failure on $path");
+ }
+ else {
+ ok t_cmp($r->code, "500");
+ ok t_cmp($r->header("Location"), undef, "failure on $path");
+ }
+ }
+}
+
diff --git a/debian/perl-framework/t/modules/allowmethods.t b/debian/perl-framework/t/modules/allowmethods.t
index 6e2e815..d012554 100644
--- a/debian/perl-framework/t/modules/allowmethods.t
+++ b/debian/perl-framework/t/modules/allowmethods.t
@@ -9,6 +9,7 @@ my $r;
my $get = "Get";
my $head = "Head";
my $post = "Post";
+my $options = "Options";
##
## mod_allowmethods test
@@ -25,11 +26,26 @@ my @test_cases = (
[ $post, $post, 200 ],
);
+my @new_test_cases = (
+ [ $get, $post . '/reset', 200 ],
+ [ $post, $get . '/post', 200 ],
+ [ $get, $get . '/post', 200 ],
+ [ $options, $get . '/post', 405 ],
+ [ $get, $get . '/none', 405 ],
+ [ $get, "NoPost", 200 ],
+ [ $post, "NoPost", 405 ],
+ [ $options, "NoPost" , 200 ],
+);
+
+if (have_min_apache_version('2.5.1')) {
+ push(@test_cases, @new_test_cases);
+}
+
plan tests => (scalar @test_cases), have_module 'allowmethods';
foreach my $case (@test_cases) {
my ($fct, $allowed, $rc) = @{$case};
-
+
if ($fct eq $get) {
$r = GET('/modules/allowmethods/' . $allowed . '/');
}
@@ -39,7 +55,10 @@ foreach my $case (@test_cases) {
elsif ($fct eq $post) {
$r = POST('/modules/allowmethods/' . $allowed . '/foo.txt');
}
+ elsif ($fct eq $options) {
+ $r = OPTIONS('/modules/allowmethods/' . $allowed . '/');
+ }
- ok t_cmp($r->code, $rc, $fct . " - When " . $allowed . " is allowed.");
+ ok t_cmp($r->code, $rc, "$fct request to /$allowed responds $rc");
}
-
+
diff --git a/debian/perl-framework/t/modules/autoindex.t b/debian/perl-framework/t/modules/autoindex.t
index acd9656..76c9af4 100644
--- a/debian/perl-framework/t/modules/autoindex.t
+++ b/debian/perl-framework/t/modules/autoindex.t
@@ -122,8 +122,17 @@ foreach my $fancy (0,1) {
sub ai_test ($$$$) {
my ($htconf,$c,$o,$t_uri) = @_;
- my $html_head = <<HEAD;
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+ my $html_head;
+
+ if (have_min_apache_version('2.5.1')) {
+ $html_head = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">';
+ }
+ else {
+ $html_head = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">';
+ }
+
+ $html_head .= <<HEAD;
+
<html>
<head>
<title>Index of $uri_prefix</title>
diff --git a/debian/perl-framework/t/modules/brotli.t b/debian/perl-framework/t/modules/brotli.t
index fcbed74..0f9dc13 100644
--- a/debian/perl-framework/t/modules/brotli.t
+++ b/debian/perl-framework/t/modules/brotli.t
@@ -5,49 +5,86 @@ use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;
-plan tests => 10, need_module 'brotli', need_module 'alias';
+my @qvalue = (
+ [ '' , 1],
+ [ ' ' , 1],
+ [ ';' , 1],
+ [';q=' , 1],
+ [';q=0' , 0],
+ [';q=0.' , 0],
+ [';q=0.0' , 0],
+ [';q=0.00' , 0],
+ [';q=0.000' , 0],
+ [';q=0.0000' , 1], # invalid qvalue format
+);
+
+plan tests => (6 * scalar @qvalue) + 4, need_module 'brotli', need_module 'alias';
my $r;
-# GET request against the location with Brotli.
-$r = GET("/only_brotli/index.html", "Accept-Encoding" => "br");
-ok t_cmp($r->code, 200);
-ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
-if (!defined($r->header("Content-Length"))) {
- t_debug "Content-Length was expected";
- ok 0;
-}
-if (!defined($r->header("ETag"))) {
- t_debug "ETag field was expected";
- ok 0;
-}
+foreach my $q (@qvalue) {
+ # GET request against the location with Brotli.
+ print "qvalue: " . $q->[0] . "\n";
+ $r = GET("/only_brotli/index.html", "Accept-Encoding" => "br" . $q->[0]);
+ ok t_cmp($r->code, 200);
+ if ($q->[1] == 1) {
+ ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
+ }
+ else {
+ ok t_cmp($r->header("Content-Encoding"), undef, "response without Content-Encoding is OK");
+ }
+
+ if (!defined($r->header("Content-Length"))) {
+ t_debug "Content-Length was expected";
+ ok 0;
+ }
+ if (!defined($r->header("ETag"))) {
+ t_debug "ETag field was expected";
+ ok 0;
+ }
-# GET request for a zero-length file.
-$r = GET("/only_brotli/zero.txt", "Accept-Encoding" => "br");
-ok t_cmp($r->code, 200);
-ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
-if (!defined($r->header("Content-Length"))) {
- t_debug "Content-Length was expected";
- ok 0;
-}
-if (!defined($r->header("ETag"))) {
- t_debug "ETag field was expected";
- ok 0;
-}
+ # GET request for a zero-length file.
+ print "qvalue: " . $q->[0] . "\n";
+ $r = GET("/only_brotli/zero.txt", "Accept-Encoding" => "br" . $q->[0]);
+ ok t_cmp($r->code, 200);
+ if ($q->[1] == 1) {
+ ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
+ }
+ else {
+ ok t_cmp($r->header("Content-Encoding"), undef, "response without Content-Encoding is OK");
+ }
-# HEAD request against the location with Brotli.
-$r = HEAD("/only_brotli/index.html", "Accept-Encoding" => "br");
-ok t_cmp($r->code, 200);
-ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
-if (!defined($r->header("Content-Length"))) {
- t_debug "Content-Length was expected";
- ok 0;
-}
-if (!defined($r->header("ETag"))) {
- t_debug "ETag field was expected";
- ok 0;
+ if (!defined($r->header("Content-Length"))) {
+ t_debug "Content-Length was expected";
+ ok 0;
+ }
+ if (!defined($r->header("ETag"))) {
+ t_debug "ETag field was expected";
+ ok 0;
+ }
+
+ # HEAD request against the location with Brotli.
+ print "qvalue: " . $q->[0] . "\n";
+ $r = HEAD("/only_brotli/index.html", "Accept-Encoding" => "br" . $q->[0]);
+ ok t_cmp($r->code, 200);
+ if ($q->[1] == 1) {
+ ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
+ }
+ else {
+ ok t_cmp($r->header("Content-Encoding"), undef, "response without Content-Encoding is OK");
+ }
+
+ if (!defined($r->header("Content-Length"))) {
+ t_debug "Content-Length was expected";
+ ok 0;
+ }
+ if (!defined($r->header("ETag"))) {
+ t_debug "ETag field was expected";
+ ok 0;
+ }
}
+
if (have_module('deflate')) {
# GET request against the location with fallback to deflate (test that
# Brotli is chosen due to the order in SetOutputFilter).
diff --git a/debian/perl-framework/t/modules/cgi.t b/debian/perl-framework/t/modules/cgi.t
index d191d8d..9b6edc2 100644
--- a/debian/perl-framework/t/modules/cgi.t
+++ b/debian/perl-framework/t/modules/cgi.t
@@ -9,10 +9,7 @@ use File::stat;
my $have_apache_2 = have_apache 2;
my $have_apache_2050 = have_min_apache_version "2.0.50";
-my $script_log_length = 8192;
-if (have_module 'mod_cgi') {
- $script_log_length = 40960;
-}
+my $script_log_length = 40960;
## mod_cgi test
##
@@ -21,12 +18,7 @@ if (have_module 'mod_cgi') {
## AddHandler cgi-script .sh
## AddHandler cgi-script .pl
## ScriptLog logs/mod_cgi.log
-## <IfModule mod_cgi.c>
-## ScriptLogLength 40960
-## </IfModule mod_cgi>
-## <IfModule !mod_cgi.c>
-## ScriptLogLength 8192
-## </IfModule mod_cgi>
+## ScriptLogLength 40960
## ScriptLogBuffer 256
## <Directory @SERVERROOT@/htdocs/modules/cgi>
## Options +ExecCGI
@@ -191,9 +183,8 @@ foreach my $length (@post_content) {
$actual = POST_RC "$path/bogus-perl.pl", content => "$content"x$length;
print "# posted content (length $length) to bogus-perl.pl\n";
- print "# got return code of: $actual, expecting: $expected\n";
## should get rc 500
- ok ($actual eq $expected);
+ ok t_cmp($actual, $expected, "POST to $path/bogus-perl.pl [content: $content x $length]");
if (-e $cgi_log) {
## cgi log should be bigger.
@@ -206,7 +197,7 @@ foreach my $length (@post_content) {
## should not fall in here at this point,
## but just in case...
print "# verifying log did not increase in size...\n";
- ok ($$stat[7] eq $log_size);
+ ok t_cmp($$stat[7], $log_size, "log size should not have increased");
}
$log_size = $$stat[7];
diff --git a/debian/perl-framework/t/modules/deflate.t b/debian/perl-framework/t/modules/deflate.t
index c107b14..3b368ce 100644
--- a/debian/perl-framework/t/modules/deflate.t
+++ b/debian/perl-framework/t/modules/deflate.t
@@ -21,7 +21,7 @@ my @server_bucketeer_uri = ("/modules/deflate/bucketeer/P.txt",
);
my $cgi_tests = 3;
-my $tests_per_uri = 3;
+my $tests_per_uri = 4;
my $tests = $tests_per_uri * (@server_deflate_uris + @server_bucketeer_uri) + $cgi_tests;
my $vars = Apache::Test::vars();
my $module = 'default';
@@ -33,6 +33,9 @@ print "testing $module\n";
my @deflate_headers;
push @deflate_headers, "Accept-Encoding" => "gzip";
+my @deflate_headers_q0;
+push @deflate_headers_q0, "Accept-Encoding" => "gzip;q=0";
+
my @inflate_headers;
push @inflate_headers, "Content-Encoding" => "gzip";
@@ -47,11 +50,13 @@ for my $server_deflate_uri (@server_deflate_uris) {
my $original_str = GET_BODY($server_deflate_uri);
my $deflated_str = GET_BODY($server_deflate_uri, @deflate_headers);
+ my $deflated_str_q0 = GET_BODY($server_deflate_uri, @deflate_headers_q0);
my $inflated_str = POST_BODY($server_inflate_uri, @inflate_headers,
content => $deflated_str);
ok $original_str eq $inflated_str;
+ ok $original_str eq $deflated_str_q0;
my $resp = POST($server_inflate_uri, @inflate_headers,
content => "foo123456789012346");
if (have_min_apache_version("2.5")) {
diff --git a/debian/perl-framework/t/modules/dir.t b/debian/perl-framework/t/modules/dir.t
index 1b93423..51e632e 100644
--- a/debian/perl-framework/t/modules/dir.t
+++ b/debian/perl-framework/t/modules/dir.t
@@ -20,7 +20,7 @@ sub my_chomp {
$actual =~ s/[\r\n]+$//s;
}
-plan tests => @bad_index * @index * 5 + @bad_index + 5, need_module 'dir';
+plan tests => @bad_index * @index * 5 + @bad_index + 5 + 3, need_module 'dir';
foreach my $bad_index (@bad_index) {
@@ -91,6 +91,21 @@ $actual = GET_BODY $url;
my_chomp();
ok ($actual eq $expected);
+# DirectorySlash stuff
+my $res = GET "/modules/dir", redirect_ok => 0;
+ok ($res->code == 301);
+$res = GET "/modules/dir/htaccess", redirect_ok => 0;
+ok ($res->code == 403);
+
+if (!have_min_apache_version('2.5.1')) {
+ skip("missing DirectorySlash NotFound");
+}
+else {
+ $res = GET "/modules/dir/htaccess/sub", redirect_ok => 0;
+ ok ($res->code == 404);
+}
+
+
sub write_htaccess {
my $string = shift;
diff --git a/debian/perl-framework/t/modules/headers.t b/debian/perl-framework/t/modules/headers.t
index 3504a33..4892b95 100644
--- a/debian/perl-framework/t/modules/headers.t
+++ b/debian/perl-framework/t/modules/headers.t
@@ -2,6 +2,7 @@ use strict;
use warnings FATAL => 'all';
use Apache::Test;
+use Apache::TestUtil;
use Apache::TestRequest;
##
@@ -11,11 +12,138 @@ use Apache::TestRequest;
my $htdocs = Apache::Test::vars('documentroot');
my $htaccess = "$htdocs/modules/headers/htaccess/.htaccess";
my @header_types = ('set', 'append', 'add', 'unset');
-
+
+my @testcases = (
+ ## htaccess
+ ## Header to set in the request
+ ## Expected result
+
+ # echo
+ [
+ "Header echo Test-Header\nHeader echo ^Aaa\$\nHeader echo ^Aa\$",
+ [ 'Test-Header' => 'value', 'Aaa' => 'b' , 'Aa' => 'bb' ],
+ [ 'Test-Header' => 'value', 'Aaa' => 'b' , 'Aa' => 'bb' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader echo XXX\nHeader echo ^Aa\$",
+ [ 'Test-Header' => 'foo', 'aaa' => 'b', 'aa' => 'bb' ],
+ [ 'Test-Header' => 'foo', 'aa' => 'bb' ],
+ ],
+ [
+ "Header echo Test-Header.*", # regex
+ [ 'Test-Header' => 'foo', 'Test-Header1' => 'value1', 'Test-Header2' => 'value2' ],
+ [ 'Test-Header' => 'foo', 'Test-Header1' => 'value1', 'Test-Header2' => 'value2' ],
+ ],
+ # edit
+ [
+ "Header echo Test-Header\nHeader edit Test-Header foo bar", # sizeof(foo) = sizeof(bar)
+ [ 'Test-Header' => 'foofoo' ],
+ [ 'Test-Header' => 'barfoo' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader edit Test-Header foo2 bar", # sizeof(foo2) > sizeof(bar)
+ [ 'Test-Header' => 'foo2foo2' ],
+ [ 'Test-Header' => 'barfoo2' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader edit Test-Header foo bar2", # sizeof(foo) < sizeof(bar2)
+ [ 'Test-Header' => 'foofoo' ],
+ [ 'Test-Header' => 'bar2foo' ],
+ ],
+ # edit*
+ [
+ "Header echo Test-Header\nHeader edit* Test-Header foo bar", # sizeof(foo) = sizeof(bar)
+ [ 'Test-Header' => 'foofoo' ],
+ [ 'Test-Header' => 'barbar' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader edit* Test-Header foo2 bar", # sizeof(foo2) > sizeof(bar)
+ [ 'Test-Header' => 'foo2foo2' ],
+ [ 'Test-Header' => 'barbar' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader edit* Test-Header foo bar2", # sizeof(foo) < sizeof(bar2)
+ [ 'Test-Header' => 'foofoo' ],
+ [ 'Test-Header' => 'bar2bar2' ],
+ ],
+ # merge
+ [
+ "Header merge Test-Header foo", # missing header
+ [ ],
+ [ 'Test-Header' => 'foo' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader merge Test-Header foo", # already existing, same value
+ [ 'Test-Header' => 'foo' ],
+ [ 'Test-Header' => 'foo' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader merge Test-Header foo", # already existing, same value, but with ""
+ [ 'Test-Header' => '"foo"' ],
+ [ 'Test-Header' => '"foo", foo' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader merge Test-Header bar", # already existing, different value
+ [ 'Test-Header' => 'foo' ],
+ [ 'Test-Header' => 'foo, bar' ],
+ ],
+ # setifempty
+ [
+ "Header echo Test-Header\nHeader setifempty Test-Header bar", # already existing
+ [ 'Test-Header' => 'foo' ],
+ [ 'Test-Header' => 'foo' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader setifempty Test-Header2 bar", # missing header
+ [ 'Test-Header' => 'foo' ],
+ [ 'Test-Header' => 'foo', 'Test-Header2' => 'bar' ],
+ ],
+ # env=
+ [
+ "SetEnv MY_ENV\nHeader set Test-Header foo env=MY_ENV", # env defined
+ [ ],
+ [ 'Test-Header' => 'foo' ],
+ ],
+ [
+ "Header set Test-Header foo env=!MY_ENV", # env NOT defined
+ [ ],
+ [ 'Test-Header' => 'foo' ],
+ ],
+ # expr=
+ [
+ "Header set Test-Header foo \"expr=%{REQUEST_URI} =~ m#htaccess#\"", # expr
+ [ ],
+ [ 'Test-Header' => 'foo' ],
+ ],
+);
+if (have_min_apache_version('2.5.1')) {
+ push(@testcases,
+ (
+ # edit*
+ [
+ "Header echo Test-Header\nHeader edit* Test-Header (?<=a)(ba) cd", # lookbehind
+ [ 'Test-Header' => 'ababa' ],
+ [ 'Test-Header' => 'acdcd' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader edit* Test-Header ^ foo", # empty match (no infinite loop!)
+ [ 'Test-Header' => 'bar' ],
+ [ 'Test-Header' => 'foobar' ],
+ ],
+ [
+ "Header echo Test-Header\nHeader edit* Test-Header ^(.*)\$ \$1;httpOnly;secure", # empty header/match (no infinite loop!)
+ [ 'Test-Header' => '' ],
+ [ 'Test-Header' => ';httpOnly;secure' ],
+ ],
+ )
+ );
+}
+
plan tests =>
- @header_types**4 + @header_types**3 + @header_types**2 + @header_types**1,
+ @header_types**4 + @header_types**3 + @header_types**2 + @header_types**1 + scalar @testcases * 2,
have_module 'headers';
+# Test various configurations
foreach my $header1 (@header_types) {
ok test_header($header1);
@@ -37,6 +165,13 @@ foreach my $header1 (@header_types) {
}
+# Test some other Header directives, including regex
+my $ua = LWP::UserAgent->new();
+my $hostport = Apache::TestRequest::hostport();
+foreach my $t (@testcases) {
+ test_header2($t);
+}
+
## clean up ##
unlink $htaccess;
@@ -157,3 +292,42 @@ sub test_header {
}
}
+
+sub test_header2 {
+ my @test = @_;
+ my $h = HTTP::Headers->new;
+
+ print "\n\n\n";
+ for (my $i = 0; $i < scalar @{$test[0][1]}; $i += 2) {
+ print "Header sent n°" . $i/2 . ":\n";
+ print " header: " . $test[0][1][$i] . "\n";
+ print " value: " . $test[0][1][$i+1] . "\n";
+ $h->header($test[0][1][$i] => $test[0][1][$i+1]);
+ }
+
+ open (HT, ">$htaccess");
+ print HT $test[0][0];
+ close(HT);
+
+ ##
+ my $r = HTTP::Request->new('GET', "http://$hostport/modules/headers/htaccess/", $h);
+ my $res = $ua->request($r);
+ ok t_cmp($res->code, 200, "Checking return code is '200'");
+
+ my $isok = 1;
+ for (my $i = 0; $i < scalar @{$test[0][2]}; $i += 2) {
+ print "\n";
+ print "Header received n°" . $i/2 . ":\n";
+ print " header: " . $test[0][2][$i] . "\n";
+ print " expected: " . $test[0][2][$i+1] . "\n";
+ if ($res->header($test[0][2][$i])) {
+ print " received: " . $res->header($test[0][2][$i]) . "\n";
+ } else {
+ print " received: <undefined>\n";
+ }
+ $isok = $isok && $res->header($test[0][2][$i]) && $test[0][2][$i+1] eq $res->header($test[0][2][$i]);
+ }
+ print "\nResponse received is:\n" . $res->as_string;
+
+ ok $isok;
+}
diff --git a/debian/perl-framework/t/modules/heartbeat.t b/debian/perl-framework/t/modules/heartbeat.t
new file mode 100644
index 0000000..d9f6f18
--- /dev/null
+++ b/debian/perl-framework/t/modules/heartbeat.t
@@ -0,0 +1,30 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil qw/t_start_error_log_watch t_finish_error_log_watch/;
+
+my $r;
+my $line;
+my $count = 0;
+my $nb_seconds = 5;
+# Because of timing, we may see less than what could be expected
+my $nb_expected = $nb_seconds - 2;
+
+plan tests => 1, sub { need_module('mod_heartbeat', 'mod_heartmonitor') && !need_apache_mpm('prefork') };
+
+# Give some time to the heart to beat a few times
+t_start_error_log_watch();
+sleep($nb_seconds);
+my @loglines = t_finish_error_log_watch();
+
+# Heartbeat sent by mod_heartbeat and received by mod_heartmonitor are logged with DEBUG AH02086 message
+foreach $line (@loglines) {
+ if ($line =~ "AH02086") {
+ $count++;
+ }
+}
+
+print "Expecting at least " . $nb_expected . " heartbeat ; Seen: " . $count . "\n";
+ok($count >= $nb_expected);
diff --git a/debian/perl-framework/t/modules/http2.t b/debian/perl-framework/t/modules/http2.t
deleted file mode 100644
index d58f52f..0000000
--- a/debian/perl-framework/t/modules/http2.t
+++ /dev/null
@@ -1,528 +0,0 @@
-use strict;
-use warnings FATAL => 'all';
-
-use Net::SSLeay;
-use Apache::Test;
-use Apache::TestRequest;
-use Apache::TestUtil;
-use Apache::TestConfig ();
-
-my $tls_version_suite = 4;
-my $num_suite = 24;
-my $vhost_suite = 4;
-
-my $total_tests = 2 * $num_suite + $vhost_suite + $tls_version_suite;
-
-Net::SSLeay::initialize();
-
-my $sni_available = Net::SSLeay::OPENSSL_VERSION_NUMBER() >= 0x01000000;
-my $alpn_available = $sni_available && exists &Net::SSLeay::CTX_set_alpn_protos;
-
-plan tests => $total_tests, need 'Protocol::HTTP2::Client',
- need_module 'http2', need_min_apache_version('2.4.17');
-
-# Check support for TLSv1_2 and later
-
-my $tls_modern = 1;
-
-Apache::TestRequest::set_ca_cert();
-my $sock = Apache::TestRequest::vhost_socket('h2');
-ok ($sock && $sock->connected);
-
-my $req = "GET / HTTP/1.1\r\n".
- "Host: " . Apache::TestRequest::hostport() . "\r\n".
- "\r\n";
-
-ok $sock->print($req);
-
-my $line = Apache::TestRequest::getline($sock) || '';
-
-ok t_cmp($line, qr{^HTTP/1\.. 200}, "read first response-line");
-
-my $tls_version = $sock->get_sslversion();
-
-ok t_cmp($tls_version, qr{^(SSL|TLSv\d(_\d)?$)}, "TLS version in use");
-
-if ($tls_version =~ /^(SSL|TLSv1(|_0|_1)$)/) {
- print STDOUT "Disabling TLS tests due to TLS version $tls_version\n";
- $tls_modern = 0;
-}
-
-Apache::TestRequest::module("http2");
-
-my $config = Apache::Test::config();
-my $host = $config->{vhosts}->{h2c}->{servername};
-my $port = $config->{vhosts}->{h2c}->{port};
-
-my $shost = $config->{vhosts}->{h2}->{servername};
-my $sport = $config->{vhosts}->{h2}->{port};
-my $serverdir = $config->{vars}->{t_dir};
-my $htdocs = $serverdir . "/htdocs";
-
-require Protocol::HTTP2::Client;
-use AnyEvent;
-use AnyEvent::Socket;
-use AnyEvent::Handle;
-use Net::SSLeay;
-use AnyEvent::TLS;
-use Carp qw( croak );
-
-no warnings 'redefine';
-no strict 'refs';
-{
- my $old_ref = \&{ 'AnyEvent::TLS::new' };
- *{ 'AnyEvent::TLS::new' } = sub {
- my ( $class, %param ) = @_;
-
- my $self = $old_ref->( $class, %param );
-
- $self->{host_name} = $param{host_name}
- if exists $param{host_name};
-
- $self;
- };
-}
-
-{
- my $old_ref = \&{ 'AnyEvent::TLS::_get_session' };
- *{ 'AnyEvent::TLS::_get_session' } = sub($$;$$) {
- my ($self, $mode, $ref, $cn) = @_;
-
- my $session = $old_ref->( @_ );
-
- if ( $mode eq 'connect' ) {
- if ( $self->{host_name} ) {
- print 'setting host_name to ' . $self->{host_name};
- Net::SSLeay::set_tlsext_host_name( $session, $self->{host_name} );
- }
- }
-
- $session;
- };
-}
-
-
-sub connect_and_do {
- my %args = (
- @_
- );
- my $scheme = $args{ctx}->{scheme};
- my $host = $args{ctx}->{host};
- my $port = $args{ctx}->{port};
- my $client = $args{ctx}->{client};
- my $host_name = $args{ctx}->{host_name};
- my $w = AnyEvent->condvar;
-
- tcp_connect $host, $port, sub {
- my ($fh) = @_ or do {
- print "connection failed: $!\n";
- $w->send;
- return;
- };
-
- my $tls;
- my $tls_ctx;
- if ($scheme eq 'https') {
- $tls = "connect";
- eval {
- # ALPN (Net-SSLeay > 1.55, openssl >= 1.0.1)
- if ( $alpn_available ) {
- $tls_ctx = AnyEvent::TLS->new( method => "TLSv1_2",
- host_name => $host_name );
- Net::SSLeay::CTX_set_alpn_protos( $tls_ctx->ctx, ['h2'] );
- }
- else {
- $tls_ctx = AnyEvent::TLS->new( host_name => $host_name );
- }
- };
- if ($@) {
- print "Some problem with SSL CTX: $@\n";
- $w->send;
- return;
- }
- }
-
- my $handle;
- $handle = AnyEvent::Handle->new(
- fh => $fh,
- tls => $tls,
- tls_ctx => $tls_ctx,
- autocork => 1,
- on_error => sub {
- $_[0]->destroy;
- print "connection error\n";
- $w->send;
- },
- on_eof => sub {
- $handle->destroy;
- $w->send;
- }
- );
-
- # First write preface to peer
- while ( my $frame = $client->next_frame ) {
- $handle->push_write($frame);
- }
-
- $handle->on_read(sub {
- my $handle = shift;
-
- $client->feed( $handle->{rbuf} );
- $handle->{rbuf} = undef;
-
- while ( my $frame = $client->next_frame ) {
- $handle->push_write($frame);
- }
-
- # Terminate connection if all done
- $handle->push_shutdown if $client->shutdown;
- });
- };
- $w->recv;
-
-}
-
-################################################################################
-#
-# Add a request to the client, will be started whenever a STREAM to
-# the server is available.
-#
-sub add_request {
- my ($scheme, $client, $host, $port);
- my %args = (
- method => 'GET',
- headers => [],
- rc => 200,
- on_done => sub {
- my %args = ( @_ );
- my $ctx = $args{ctx};
- my $req = $args{request};
- my $resp = $args{response};
- my $hr = $resp->{headers};
- my %headers = @$hr;
- ok t_cmp($headers{':status'}, $req->{rc},
- "$req->{method} $ctx->{scheme}://$ctx->{host}:$ctx->{port}$req->{path}");
- },
- @_
- );
- $client = $args{ctx}->{client};
- $scheme = $args{ctx}->{scheme};
- $host = $args{ctx}->{host};
- $port = $args{ctx}->{port};
-
- $client->request(
- ':scheme' => $scheme,
- ':authority' => $args{authority} || $host . ':' . $port,
- ':path' => $args{path},
- ':method' => $args{method},
- headers => $args{headers},
- on_done => sub {
- my ($headers, $data) = @_;
- $args{on_done}(
- ctx => $args{ctx},
- request => \%args,
- response => { headers => \@$headers, data => $data }
- );
- }
- );
-}
-
-################################################################################
-#
-# Add a list of request that will be processed in order. Only when the previous
-# request is done, will a new one be started.
-#
-sub add_sequential {
- my ($scheme, $client, $host, $port);
- my %args = ( @_ );
- my $ctx = $args{ctx};
- my $requests = $args{requests};
-
- $client = $args{ctx}->{client};
- $scheme = $args{ctx}->{scheme};
- $host = $args{ctx}->{host};
- $port = $args{ctx}->{port};
-
- my $request = shift @$requests;
-
- if ($request) {
- my %r = (
- method => 'GET',
- headers => [],
- rc => 200,
- on_done => sub {
- my %args = ( @_ );
- my $ctx = $args{ctx};
- my $req = $args{request};
- my $resp = $args{response};
- my $hr = $resp->{headers};
- my %headers = @$hr;
- ok t_cmp($headers{':status'}, $req->{rc},
- "$req->{method} $ctx->{scheme}://$ctx->{host}:$ctx->{port}$req->{path}");
- },
- %$request
- );
-
- print "test case: $r{descr}: $r{method} $ctx->{scheme}://$ctx->{host}:$ctx->{port}$r{path}\n";
- $client->request(
- ':scheme' => $scheme,
- ':authority' => $r{authority} || $host . ':' . $port,
- ':path' => $r{path},
- ':method' => $r{method},
- headers => $r{headers},
- on_done => sub {
- my ($headers, $data) = @_;
- $r{on_done}(
- ctx => ${ctx},
- request => \%r,
- response => { headers => \@$headers, data => $data }
- );
- add_sequential(
- ctx => $ctx,
- requests => $requests
- );
- }
- );
- }
-}
-
-sub cmp_content_length {
- my %args = ( @_ );
- my $ctx = $args{ctx};
- my $req = $args{request};
- my $resp = $args{response};
- my $hr = $resp->{headers};
- my %headers = @$hr;
- ok t_cmp($headers{':status'}, $req->{rc}, "response status");
- ok t_cmp(length $resp->{data}, $req->{content_length}, "content-length");
-}
-
-sub cmp_content {
- my %args = ( @_ );
- my $ctx = $args{ctx};
- my $req = $args{request};
- my $resp = $args{response};
- my $hr = $resp->{headers};
- my %headers = @$hr;
- ok t_cmp($headers{':status'}, $req->{rc}, "response status");
- ok t_cmp($resp->{data}, $req->{content}, "content comparision");
-}
-
-sub cmp_file_response {
- my %args = ( @_ );
- my $ctx = $args{ctx};
- my $req = $args{request};
- my $resp = $args{response};
- my $hr = $resp->{headers};
- my %headers = @$hr;
- ok t_cmp($headers{':status'}, $req->{rc}, "response status");
- open(FILE, "<$htdocs$req->{path}") or die "cannot open $req->{path}";
- undef $/;
- my $content = <FILE>;
- close(FILE);
- ok t_is_equal($resp->{data}, $content);
-}
-
-sub check_redir {
- my %args = ( @_ );
- my $ctx = $args{ctx};
- my $req = $args{request};
- my $resp = $args{response};
- my $hr = $resp->{headers};
- my %headers = @$hr;
- ok t_cmp($headers{':status'}, 302, "response status");
- ok t_cmp(
- $headers{location},
- "$ctx->{scheme}://$ctx->{host}:$ctx->{port}$req->{redir_path}",
- "location header"
- );
-}
-
-################################################################################
-#
-# Perform common tests to h2c + h2 hosts
-#
-sub do_common {
- my %args = (
- scheme => 'http',
- host => 'localhost',
- port => 80,
- @_
- );
- my $true_tls = ($args{scheme} eq 'https' and $sni_available);
-
- $args{client} = Protocol::HTTP2::Client->new( upgrade => 0 );
-
- my $r = [
- {
- descr => 'TC0001, expecting 200',
- path => '/'
- },
- {
- descr => 'TC0002, expecting 404',
- rc => 404,
- path => '/not_here'
- },
- {
- descr => 'TC0005, cmp index.html file',
- path => '/modules/h2/index.html',
- on_done => \&cmp_file_response
- },
- {
- descr => 'TC0006, cmp image file',
- path => '/modules/h2/003/003_img.jpg',
- on_done => \&cmp_file_response
- },
- ];
-
- if (have_module 'mod_rewrite') {
- push @$r, {
- descr => 'TC0007, rewrite handling',
- path => '/modules/h2/latest.tar.gz',
- redir_path => "/modules/h2/xxx-1.0.2a.tar.gz",
- on_done => \&check_redir
- }
- }
- else {
- skip "skipping test as mod_rewrite not available" foreach(1..2);
- }
-
- if (have_cgi) {
- # my $sni_host = $true_tls? 'localhost' : '';
- my $content = <<EOF;
-<html><body>
-<h2>Hello World!</h2>
-</body></html>
-EOF
-
- push @$r, {
- descr => 'TC0008, hello.pl with ssl vars',
- path => '/modules/h2/hello.pl',
- content => $content,
- on_done => \&cmp_content,
- };
-
- $content = <<EOF;
-<html><body>
-<p>No query was specified.</p>
-</body></html>
-EOF
- push @$r, {
- descr => 'TC0009, necho.pl without arguments',
- path => '/modules/h2/necho.pl',
- content => $content,
- rc => 400,
- on_done => \&cmp_content,
- };
- push @$r, {
- descr => 'TC0010, necho.pl 2x10',
- path => '/modules/h2/necho.pl?count=2&text=0123456789',
- content => "01234567890123456789",
- on_done => \&cmp_content,
- };
- push @$r, {
- descr => 'TC0011, necho.pl 10x10',
- path => '/modules/h2/necho.pl?count=10&text=0123456789',
- content_length => 100,
- on_done => \&cmp_content_length,
- };
- push @$r, {
- descr => 'TC0012, necho.pl 100x10',
- path => '/modules/h2/necho.pl?count=100&text=0123456789',
- content_length => 1000,
- on_done => \&cmp_content_length,
- };
- push @$r, {
- descr => 'TC0013, necho.pl 1000x10',
- path => '/modules/h2/necho.pl?count=1000&text=0123456789',
- content_length => 10000,
- on_done => \&cmp_content_length,
- };
- push @$r, {
- descr => 'TC0014, necho.pl 10000x10',
- path => '/modules/h2/necho.pl?count=10000&text=0123456789',
- content_length => 100000,
- on_done => \&cmp_content_length,
- };
- push @$r, {
- descr => 'TC0015, necho.pl 100000x10',
- path => '/modules/h2/necho.pl?count=100000&text=0123456789',
- content_length => 1000000,
- on_done => \&cmp_content_length,
- };
- }
- else {
- skip "skipping test as mod_cgi not available" foreach(1..1);
- }
-
- add_sequential(
- ctx => \%args,
- requests => $r
- );
- connect_and_do( ctx => \%args );
-}
-
-################################################################################
-#
-# Perform tests for virtual host setups, requires a client with SNI+ALPN
-#
-sub do_vhosts {
- my %args = (
- scheme => 'http',
- host => 'localhost',
- port => 80,
- @_
- );
- $args{client} = Protocol::HTTP2::Client->new( upgrade => 0 );
-
- my $r = [
- {
- descr => 'VHOST000, expecting 200',
- path => '/'
- },
- {
- descr => 'VHOST001, expect 404 or 421 (using Host:)',
- rc => 404,
- path => '/misdirected',
- header => [ 'host' => 'noh2.example.org' . $args{port} ]
- },
- {
- descr => 'VHOST002, expect 421 (using :authority)',
- rc => 421,
- path => '/misdirected',
- authority => 'noh2.example.org:' . $args{port}
- },
- {
- descr => 'VHOST003, expect 421 ',
- rc => (have_min_apache_version('2.4.18')? 404 : 421),
- path => '/misdirected',
- authority => 'test.example.org:' . $args{port}
- },
- ];
-
- add_sequential(
- ctx => \%args,
- requests => $r
- );
- connect_and_do( ctx => \%args );
-}
-
-################################################################################
-#
-# Bring it on
-#
-do_common( 'scheme' => 'http', 'host' => $host, 'port' => $port );
-if ($tls_modern) {
- do_common( 'scheme' => 'https', 'host' => $shost, 'port' => $sport );
-} else {
- skip "skipping test as TLS version '$tls_version' is not supported" foreach(1..$num_suite);
-}
-if ($sni_available) {
- if ($tls_modern) {
- do_vhosts( 'scheme' => 'https', 'host' => $shost, 'port' => $sport, host_name => "$shost:${sport}" );
- } else {
- skip "skipping test as TLS version '$tls_version' is not supported" foreach(1..$vhost_suite);
- }
-} else {
- skip "skipping test as SNI not available" foreach(1..$vhost_suite);
-}
diff --git a/debian/perl-framework/t/modules/include.t b/debian/perl-framework/t/modules/include.t
index 64b2fdc..9ff2411 100644
--- a/debian/perl-framework/t/modules/include.t
+++ b/debian/perl-framework/t/modules/include.t
@@ -28,6 +28,7 @@ my $htdocs = Apache::Test::vars('documentroot');
my %test = (
"echo.shtml" => "echo.shtml",
"set.shtml" => "set works",
+"comment.shtml" => "No comment here",
"include1.shtml" => "inc-two.shtml body include.shtml body",
"include2.shtml" => "inc-two.shtml body include.shtml body",
"include3.shtml" => "inc-two.shtml body inc-one.shtml body ".
@@ -96,6 +97,10 @@ my %test = (
"virtualq.shtml?foo=bar" => "foo=bar pass inc-two.shtml body foo=bar", # PR#12655
"inc-nego.shtml" => "index.html.en", # requires mod_negotiation
+"mod_request/echo.shtml"=> "echo.shtml",
+"mod_request/post.shtml?foo=bar&foo2=bar2"
+ => "GET foo: bar foo2: bar2",
+"mod_request/post.shtml"=> "POST foo: bar foo2: bar2", # will be twice, only the first one succeed
);
my %ap_expr_test = (
@@ -227,15 +232,16 @@ unless ($have_apache_2) {
push @todo, (scalar keys %tests) + 1;
}
-# in addition to %tests, there are 1 fsize and 1 flastmod test,
+# in addition to %tests, there are 1 mod_request expected failure,
+# 1 fsize and 1 flastmod test,
# 1 GET test, 2 query string tests, 14 XBitHack tests and 14
# tests that use mod_bucketeer to construct brigades for mod_include
-my $tests = (scalar keys %tests) + @patterns + 1 + 1 + 1 + 2 + 14 + 14;
+my $tests = (scalar keys %tests) + 1 + @patterns + 1 + 1 + 1 + 2 + 14 + 14;
plan tests => $tests,
todo => \@todo,
- need need_lwp, need_module 'include';
+ need 'DateTime', need_lwp, need_module 'include';
foreach $doc (sort keys %tests) {
# do as much from %test as we can
@@ -267,6 +273,35 @@ foreach $doc (sort keys %tests) {
skip "Skipping 'exec cgi' test; no cgi module.", 1;
}
}
+ elsif ($doc =~ m/mod_request.*\?/) {
+ # param in the url ==> use GET
+ if (have_cgi) {
+ ok t_cmp(super_chomp(GET_BODY "$dir$doc"),
+ $tests{$doc},
+ "GET $dir$doc"
+ );
+ }
+ else {
+ skip "Skipping 'exec cgi' test; no cgi module.", 1;
+ }
+ }
+ elsif ($doc =~ m/mod_request/) {
+ # no param in the url ==> use POST with a content
+ if (have_cgi) {
+ ok t_cmp(super_chomp(POST_BODY "$dir$doc", content => "foo=bar&foo2=bar2"),
+ $tests{$doc},
+ "POST $dir$doc"
+ );
+ if ($doc =~ m/mod_request.*post/) {
+ # KeptBodySize is 32
+ my $r = POST("$dir$doc", content => "foo=bar&foo2=bar2&foo3=bar3&foo4=bar4");
+ ok t_cmp($r->code, 413, "sizeof(body) > KeptBodySize");
+ }
+ }
+ else {
+ skip "Skipping 'exec cgi' test; no cgi module.", 2;
+ }
+ }
else {
ok t_cmp(super_chomp(GET_BODY "$dir$doc"),
$tests{$doc},
@@ -311,6 +346,10 @@ unless(eval "require POSIX") {
else {
# use DateTime and avoid the system locale messing things up
use DateTime;
+ # Only for checking, whether system strftime supports %s
+ use POSIX;
+ my $strftime_gnu = (POSIX::strftime("%s", gmtime()) eq '%s' ? 0 : 1);
+
my $result = super_chomp(GET_BODY "${dir}file.shtml");
$result = single_space($result);
@@ -325,8 +364,8 @@ else {
my $expected = join ' ' =>
$dt->strftime("%A, %B %e, %G"),
$dt->strftime("%A, %B %e, %G"),
- $dt->strftime("%s"),
- $dt->strftime("%s");
+ $strftime_gnu ? $dt->strftime("%s") : '%s',
+ $strftime_gnu ? $dt->strftime("%s") : '%s';
# trim output
$expected = single_space($expected);
diff --git a/debian/perl-framework/t/modules/info.t b/debian/perl-framework/t/modules/info.t
index cbc4d6e..21cee4e 100644
--- a/debian/perl-framework/t/modules/info.t
+++ b/debian/perl-framework/t/modules/info.t
@@ -31,7 +31,7 @@ foreach (split /\n/, $info) {
foreach (sort keys %$mods) {
($mods->{$_} && !$config->should_skip_module($_)) or next;
- if ($_ =~ /^mod_mpm_(eventopt|event|prefork|worker)\.c$/) {
+ if ($_ =~ /^mod_mpm_(eventopt|event|motorz|prefork|worker)\.c$/) {
push(@expected,"$1.c");
} elsif ($_ eq 'mod_mpm_simple.c') {
push(@expected,'simple_api.c');
diff --git a/debian/perl-framework/t/modules/ldap.t b/debian/perl-framework/t/modules/ldap.t
new file mode 100644
index 0000000..d3bb8e9
--- /dev/null
+++ b/debian/perl-framework/t/modules/ldap.t
@@ -0,0 +1,52 @@
+use strict;
+use warnings FATAL => 'all';
+
+#
+# To run tests for mod_authnz_ldap:
+#
+# a) run an LDAP server with root DN of dc=example,dc=com on localhost port 8389
+# b) populate the directory with the LDIF from scripts/httpd.ldif
+# c) configure & run the test suite passing "--defines LDAP" to ./t/TEST
+#
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil;
+use Apache::TestConfig;
+
+my $defs = Apache::Test->vars('defines');
+my $ldap_defined = $defs =~ /LDAP/;
+
+# URL -> username, password, expected-status
+my @cases = (
+ ['/modules/ldap/simple/' => '', '', 401],
+ ['/modules/ldap/simple/' => 'alpha', 'badpass', 401],
+ ['/modules/ldap/simple/' => 'alpha', 'Alpha', 200],
+ ['/modules/ldap/simple/' => 'gamma', 'Gamma', 200],
+ ['/modules/ldap/group/' => 'gamma', 'Gamma', 401],
+ ['/modules/ldap/group/' => 'delta', 'Delta', 200],
+ ['/modules/ldap/refer/' => 'alpha', 'Alpha', 401],
+ ['/modules/ldap/refer/' => 'beta', 'Beta', 200],
+);
+
+plan tests => scalar @cases,
+ need need_module('authnz_ldap'), { "LDAP testing not configured" => $ldap_defined };
+
+foreach my $t (@cases) {
+ my $url = $t->[0];
+ my $username = $t->[1];
+ my $password = $t->[2];
+ my $response;
+ my $creds;
+
+ if ($username) {
+ $response = GET $url, username => $username, password => $password;
+ $creds = "$username/$password";
+ }
+ else {
+ $response = GET $url;
+ $creds = "no credentials";
+ }
+
+ ok t_cmp($response->code, $t->[3], "test for $url with $creds");
+}
diff --git a/debian/perl-framework/t/modules/lua.t b/debian/perl-framework/t/modules/lua.t
index 9eb5b4f..9e6836d 100644
--- a/debian/perl-framework/t/modules/lua.t
+++ b/debian/perl-framework/t/modules/lua.t
@@ -41,6 +41,8 @@ my @ts = (
{ url => "$pfx/setheaderfromparam.lua?HeaderName=foo&HeaderValue=bar",
rcontent => "Header set",
headers => { "foo" => "bar" } },
+ { url => "$pfx/filtered/foobar.html",
+ rcontent => "prefix\nbucket:foobar\nsuffix\n" },
);
plan tests => 4 * scalar @ts, need 'lua';
diff --git a/debian/perl-framework/t/modules/negotiation.t b/debian/perl-framework/t/modules/negotiation.t
index 0081ce0..9218aa1 100644
--- a/debian/perl-framework/t/modules/negotiation.t
+++ b/debian/perl-framework/t/modules/negotiation.t
@@ -7,8 +7,12 @@ use Apache::TestUtil;
## mod_negotiation test (see extra.conf.in)
-my ($en, $fr, $de, $fu, $bu) = qw(en fr de fu bu);
+my ($en, $fr, $de, $fu, $bu, $zh) = qw(en fr de fu bu zh-TW);
+
my @language = ($en, $fr, $de, $fu);
+if (have_min_apache_version("2.4.38")) {
+ push @language, $zh;
+}
my @ct_tests = (
# [ Accept header, Expected response ]
diff --git a/debian/perl-framework/t/modules/proxy.t b/debian/perl-framework/t/modules/proxy.t
index af822cd..0a81f4f 100644
--- a/debian/perl-framework/t/modules/proxy.t
+++ b/debian/perl-framework/t/modules/proxy.t
@@ -7,16 +7,45 @@ use Apache::TestUtil;
use Apache::TestConfig ();
use Misc;
-my $num_tests = 31;
+my $num_tests = 46;
plan tests => $num_tests, need need_module 'proxy', need_module 'setenvif';
Apache::TestRequest::module("proxy_http_reverse");
Apache::TestRequest::user_agent(requests_redirectable => 0);
my $r = GET("/reverse/");
-ok t_cmp($r->code, 200, "reverse proxy to index.html");
+ok t_cmp($r->code, 200, "reverse proxy");
ok t_cmp($r->content, qr/^welcome to /, "reverse proxied body");
+$r = GET("/reverse/index.html");
+ok t_cmp($r->code, 200, "reverse proxy to index.html");
+ok t_cmp($r->content, qr/^welcome to /, "reverse proxied body to index.html");
+
+if (have_min_apache_version('2.4.49')) {
+ $r = GET("/reverse-match/");
+ ok t_cmp($r->code, 200, "reverse proxy match");
+ ok t_cmp($r->content, qr/^welcome to /, "reverse proxied body match");
+
+ $r = GET("/reverse-match/index.html");
+ ok t_cmp($r->code, 200, "reverse proxy match to index.html");
+ ok t_cmp($r->content, qr/^welcome to /, "reverse proxied body match to index.html");
+}
+else {
+ skip "skipping reverse-match test with httpd <2.5.1" foreach (1..4);
+}
+
+$r = GET("/reverse-slash");
+ok t_cmp($r->code, 200, "reverse proxy match no slash");
+ok t_cmp($r->content, qr/^welcome to /, "reverse proxied body no slash");
+
+$r = GET("/reverse-slash/");
+ok t_cmp($r->code, 200, "reverse proxy match w/ slash");
+ok t_cmp($r->content, qr/^welcome to /, "reverse proxied body w/ slash");
+
+$r = GET("/reverse-slash/index.html");
+ok t_cmp($r->code, 200, "reverse proxy match w/ slash to index.html");
+ok t_cmp($r->content, qr/^welcome to /, "reverse proxied body w/ slash to index.html");
+
if (have_min_apache_version('2.4.0')) {
$r = GET("/reverse/locproxy/");
ok t_cmp($r->code, 200, "reverse Location-proxy to index.html");
@@ -188,3 +217,17 @@ else {
skip "skipping UDS tests with httpd < 2.4.7" foreach (1..2);
}
+if (have_min_apache_version('2.4.49')) {
+
+ $r = GET("/notexisting/../mapping/mapping.html");
+ ok t_cmp($r->code, 200, "proxy mapping=servlet map it to /servlet/mapping.html");
+
+ $r = GET("/notexisting/..;/mapping/mapping.html");
+ ok t_cmp($r->code, 200, "proxy mapping=servlet map it to /servlet/mapping.html");
+
+ $r = GET("/mapping/mapping.html");
+ ok t_cmp($r->code, 200, "proxy to /servlet/mapping.html");
+}
+else {
+ skip "skipping tests with mapping=servlet" foreach (1..3);
+}
diff --git a/debian/perl-framework/t/modules/proxy_balancer.t b/debian/perl-framework/t/modules/proxy_balancer.t
index a16521b..ee31507 100644
--- a/debian/perl-framework/t/modules/proxy_balancer.t
+++ b/debian/perl-framework/t/modules/proxy_balancer.t
@@ -6,22 +6,120 @@ use Apache::TestRequest;
use Apache::TestUtil;
use Apache::TestConfig ();
-plan tests => 3, need 'proxy_balancer', 'proxy_http';
+my @echos = ('A'x8, 'A'x64, 'A'x2048, 'A'x4096);
+
+my $skipbodyfailover = !need_min_apache_version("2.4.42");
+my $referertest = 0;
+
+if (have_min_apache_version("2.4.41")) {
+ $referertest = 2;
+}
+
+plan tests => 6+(2*scalar @echos)+$referertest, need 'proxy_balancer', 'proxy_http';
Apache::TestRequest::module("proxy_http_balancer");
Apache::TestRequest::user_agent(requests_redirectable => 0);
+# Extract the nonce from response to the URL
+sub GetNonce {
+ my $url = shift;
+ my $balancer = shift;
+ my $r;
+ $r = GET($url);
+ my $NONCE;
+ foreach my $query ( split( /\?b=/, $r->content ) ){
+ if ($query =~ m/$balancer/) {
+ foreach my $var ( split( /&amp;/, $query ) ){
+ if ($var =~ m/nonce=/) {
+ foreach my $nonce ( split( /nonce=/, $var ) ){
+ my $ind = index ($nonce, "\"");
+ $nonce = substr($nonce, 0, ${ind});
+ if ( $nonce =~ m/^[0-9a-fA-F-]+$/ ) {
+ $NONCE = $nonce;
+ last;
+ }
+ }
+ last;
+ }
+ }
+ last;
+ }
+ }
+ return $NONCE;
+}
+
+my $r;
+
+if (have_module('lbmethod_byrequests')) {
+ $r = GET("/baltest1/index.html");
+ ok t_cmp($r->code, 200, "Balancer did not die");
+} else {
+ skip "skipping tests without mod_lbmethod_byrequests" foreach (1..1);
+}
+
+if (have_module('lbmethod_bytraffic')) {
+ $r = GET("/baltest2/index.html");
+ ok t_cmp($r->code, 200, "Balancer did not die");
+} else {
+ skip "skipping tests without mod_lbmethod_bytraffic" foreach (1..1);
+}
+
+if (have_module('lbmethod_bybusyness')) {
+ $r = GET("/baltest3/index.html");
+ ok t_cmp($r->code, 200, "Balancer did not die");
+} else {
+ skip "skipping tests without mod_lbmethod_bybusyness" foreach (1..1);
+}
+
+if (have_module('lbmethod_heartbeat')) {
+ #$r = GET("/baltest4/index.html");
+ #ok t_cmp($r->code, 200, "Balancer did not die");
+} else {
+ #skip "skipping tests without mod_lbmethod_heartbeat" foreach (1..1);
+}
+
-my $r = GET("/baltest1/index.html");
-ok t_cmp($r->code, 200, "Balancer did not die");
-$r = GET("/baltest2/index.html");
-ok t_cmp($r->code, 200, "Balancer did not die");
+# PR63891
+foreach my $t (@echos) {
+ $r = POST "/baltest_echo_post", content => $t;
+ skip $skipbodyfailover, t_cmp($r->code, 200, "failed over");
+ skip $skipbodyfailover, t_cmp($r->content, $t, "response body echoed");
+}
+
+# test dynamic part
+$r = GET("/balancer-manager");
+ok t_cmp($r->code, 200, "Can't find balancer-manager");
+
+# get the nonce and add a worker
+my $result = GetNonce("/balancer-manager", "dynproxy");
-$r = GET("/baltest3/index.html");
-ok t_cmp($r->code, 200, "Balancer did not die");
+my $query = "b_lbm=byrequests&b_tmo=0&b_max=0&b_sforce=0&b_ss=&b_nwrkr=ajp%3A%2F%2F%5B0%3A0%3A0%3A0%3A0%3A0%3A0%3A1%5D%3A8080&b_wyes=1&b=dynproxy&nonce=" . $result;
+my @proxy_balancer_headers;
+my $vars = Apache::Test::vars();
+push @proxy_balancer_headers, "Referer" => "http://" . $vars->{servername} . ":" . $vars->{port} . "/balancer-manager";
+
+# First try without the referer it should fail.
+if (have_min_apache_version("2.4.41")) {
+ $r = POST("/balancer-manager", content => $query);
+ ok t_cmp($r->code, 200, "request failed");
+ ok !t_cmp($r->content, qr/ajp/, "AJP worker created");
+}
-if (have_min_apache_version("2.3.0")) {
- # $r = GET("/baltest4/index.html");
- # ok t_cmp($r->code, 200, "Balancer did not die");
+# Try with the referer and http (byrequests)
+if (have_min_apache_version("2.4.49") && have_module('lbmethod_byrequests')) {
+ $r = GET("/dynproxy");
+ ok t_cmp($r->code, 503, "request should fail for /dynproxy");
+ # create it
+ $query = 'b_lbm=byrequests&b_tmo=0&b_max=0&b_sforce=0&b_ss=&b_nwrkr=http%3A%2F%2F' . $vars->{servername} . '%3A' . $vars->{port} . '&b_wyes=1&b=dynproxy&nonce=' . $result;
+ $r = POST("/balancer-manager", content => $query, @proxy_balancer_headers);
+ # enable it.
+ $query = 'w=http%3A%2F%2F' . $vars->{servername} . '%3A' . $vars->{port} . '&b=dynproxy&w_status_D=0&nonce=' . $result;
+ $r = POST("/balancer-manager", content => $query, @proxy_balancer_headers);
+ # make a query
+ $r = GET("/dynproxy");
+ ok t_cmp($r->code, 200, "request failed to /dynproxy");
+} else {
+ skip "skipping tests without lbmethod_byrequests";
+ skip "skipping tests without lbmethod_byrequests";
}
diff --git a/debian/perl-framework/t/modules/proxy_fcgi.t b/debian/perl-framework/t/modules/proxy_fcgi.t
index 1577497..2f62580 100644
--- a/debian/perl-framework/t/modules/proxy_fcgi.t
+++ b/debian/perl-framework/t/modules/proxy_fcgi.t
@@ -129,8 +129,16 @@ sub run_fcgi_envvar_request
$envs{$components[0]} = $components[1];
}
- # Rejoin the child FCGI process.
- waitpid($child, 0) unless ($fcgi_port <= 0) ;
+ if ($fcgi_port > 0) {
+ if ($r->code eq '500') {
+ # Unknown failure, probably the request didn't hit the FCGI child
+ # process, so it will hang waiting for our request
+ kill 'TERM', $child;
+ } else {
+ # Rejoin the child FCGI process.
+ waitpid($child, 0);
+ }
+ }
return \%envs;
}
diff --git a/debian/perl-framework/t/modules/proxy_websockets.t b/debian/perl-framework/t/modules/proxy_websockets.t
new file mode 100644
index 0000000..f2d6558
--- /dev/null
+++ b/debian/perl-framework/t/modules/proxy_websockets.t
@@ -0,0 +1,81 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil;
+use Apache::TestConfig ();
+
+# not reliable, hangs for some people:
+# my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "ping4" x 4096, "sendquit");
+my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "sendquit");
+my $total_tests = 2;
+
+plan tests => $total_tests, need 'AnyEvent::WebSocket::Client',
+ need_module('proxy_http', 'lua'), need_min_apache_version('2.4.47');
+
+require AnyEvent;
+require AnyEvent::WebSocket::Client;
+
+my $config = Apache::Test::config();
+my $hostport = Apache::TestRequest::hostport();
+
+my $client = AnyEvent::WebSocket::Client->new(timeout => 5);
+
+my $quit_program = AnyEvent->condvar;
+
+my $responses = 0;
+my $surprised = 0;
+
+$client->connect("ws://$hostport/proxy/wsoc")->cb(sub {
+ our $connection = eval { shift->recv };
+ t_debug("wsoc connected");
+ if($@) {
+ # handle error...
+ warn $@;
+ $quit_program->send();
+ return;
+ }
+
+
+ # AnyEvent::WebSocket::Connection does not pass the PONG message down to the callback
+ # my $actualpingmsg = AnyEvent::WebSocket::Message->new(opcode => 0x09, body => "xxx");
+ # $connection->send($actualpingmsg);
+
+ foreach (@test_cases){
+ $connection->send($_);
+ }
+
+ $connection->on(finish => sub {
+ t_debug("finish");
+ });
+
+ # recieve message from the websocket...
+ $connection->on(each_message => sub {
+ # $connection is the same connection object
+ # $message isa AnyEvent::WebSocket::Message
+ my($connection, $message) = @_;
+ $responses++;
+ t_debug("wsoc msg received: " . substr($message->body, 0, 5). " opcode " . $message->opcode);
+ if ("sendquit" eq $message->body) {
+ $connection->send('quit');
+ t_debug("closing");
+ $connection->close; # doesn't seem to close TCP.
+ $quit_program->send();
+ }
+ elsif ($message->body =~ /^ping(\d)/) {
+ my $offset = $1;
+ if ($message->body ne $test_cases[$offset]) {
+ $surprised++;
+ }
+ }
+ else {
+ $surprised++;
+ }
+ });
+
+});
+
+$quit_program->recv;
+ok t_cmp($surprised, 0);
+ok t_cmp($responses, scalar(@test_cases) );
diff --git a/debian/perl-framework/t/modules/proxy_websockets_ssl.t b/debian/perl-framework/t/modules/proxy_websockets_ssl.t
new file mode 100644
index 0000000..793ff48
--- /dev/null
+++ b/debian/perl-framework/t/modules/proxy_websockets_ssl.t
@@ -0,0 +1,86 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil;
+use Apache::TestConfig ();
+
+# my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "ping4" x 4000, "sendquit");
+my @test_cases = ( "ping0", "ping1" x 10, "ping2" x 100, "ping3" x 1024, "sendquit");
+my $total_tests = 2;
+
+plan tests => $total_tests, need 'AnyEvent::WebSocket::Client',
+ need_module('ssl', 'proxy_http', 'lua'), need_min_apache_version('2.4.47');
+
+require AnyEvent;
+require AnyEvent::WebSocket::Client;
+
+my $config = Apache::Test::config();
+#my $hostport = $config->{vhosts}->{proxy_https_https}->{hostport};
+my $hostport = $config->{vhosts}->{$config->{vars}->{ssl_module_name}}->{hostport};
+my $client = AnyEvent::WebSocket::Client->new(timeout => 5, ssl_ca_file => $config->{vars}->{sslca} . "/" . $config->{vars}->{sslcaorg} . "/certs/ca.crt");
+
+my $quit_program = AnyEvent->condvar;
+
+my $responses = 0;
+my $surprised = 0;
+
+t_debug("wss://$hostport/modules/lua/websockets.lua");
+
+# $client->connect("wss://$hostport/proxy/wsoc")->cb(sub {
+$client->connect("wss://$hostport/modules/lua/websockets.lua")->cb(sub {
+ our $connection = eval { shift->recv };
+ t_debug("wsoc connected");
+ if($@) {
+ # handle error...
+ warn $@;
+ $quit_program->send();
+ return;
+ }
+
+
+ # AnyEvent::WebSocket::Connection does not pass the PONG message down to the callback
+ # my $actualpingmsg = AnyEvent::WebSocket::Message->new(opcode => 0x09, body => "xxx");
+ # $connection->send($actualpingmsg);
+
+ foreach (@test_cases){
+ $connection->send($_);
+ }
+
+ $connection->on(finish => sub {
+ t_debug("finish");
+ $quit_program->send();
+ });
+
+ # recieve message from the websocket...
+ $connection->on(each_message => sub {
+ # $connection is the same connection object
+ # $message isa AnyEvent::WebSocket::Message
+ my($connection, $message) = @_;
+ $responses++;
+ t_debug("wsoc msg received: " . substr($message->body, 0, 5). " opcode " . $message->opcode);
+ if ("sendquit" eq $message->body) {
+ $connection->send('quit');
+ t_debug("closing");
+ $connection->close; # doesn't seem to close TCP.
+ $quit_program->send();
+ }
+ elsif ($message->body =~ /^ping(\d)/) {
+ my $offset = $1;
+ if ($message->body ne $test_cases[$offset]) {
+ t_debug("wrong data");
+ $surprised++;
+ }
+ }
+ else {
+ $surprised++;
+ }
+ });
+
+});
+
+$quit_program->recv;
+ok t_cmp($surprised, 0);
+# We don't expect the 20k over SSL to work, and we won't read the "sendquit" echoed back either.
+ok t_cmp($responses, scalar(@test_cases));
diff --git a/debian/perl-framework/t/modules/rewrite.t b/debian/perl-framework/t/modules/rewrite.t
index f566535..4673431 100644
--- a/debian/perl-framework/t/modules/rewrite.t
+++ b/debian/perl-framework/t/modules/rewrite.t
@@ -15,6 +15,49 @@ my @url = qw(forbidden gone perm temp);
my @todo;
my $r;
+my @redirects_all = (
+ ["/modules/rewrite/escaping/qsd-like/foo", "/foo\$", have_min_apache_version('2.4.57')], # PR66547
+ ["/modules/rewrite/escaping/qsd-like-plus-qsa/foo?preserve-me", "/foo\\?preserve-me\$", have_min_apache_version('2.5.1')], # PR66672
+ ["/modules/rewrite/escaping/qsd-like-plus-qsa-qsl/foo/%3fbar/?preserve-me", "/foo/%3fbar/\\?preserve-me\$", have_min_apache_version('2.5.1')], # PR66672
+ );
+
+my @escapes = (
+ # rewrite to local/PT is not escaped
+ [ "/modules/rewrite/escaping/local/foo%20bar" => 403],
+ # rewrite to redir escape opted out
+ [ "/modules/rewrite/escaping/redir_ne/foo%20bar" => 403],
+ # rewrite never escapes proxy targets, even though [NE] is kind or repurposed.
+ [ "/modules/rewrite/escaping/proxy/foo%20bar" => 403],
+ [ "/modules/rewrite/escaping/proxy_ne/foo%20bar" => 403],
+
+ [ "/modules/rewrite/escaping/fixups/local/foo%20bar" => 403],
+ [ "/modules/rewrite/escaping/fixups/redir_ne/foo%20bar" => 403],
+ [ "/modules/rewrite/escaping/fixups/proxy/foo%20bar" => 403],
+ [ "/modules/rewrite/escaping/fixups/proxy_ne/foo%20bar" => 403],
+);
+if (have_min_apache_version('2.4.57')) {
+ push(@escapes, (
+ # rewrite to redir escaped by default
+ [ "/modules/rewrite/escaping/redir/foo%20bar" => 302],
+ [ "/modules/rewrite/escaping/fixups/redir/foo%20bar" => 302],
+ ));
+}
+
+my @bflags = (
+ # t/conf/extra.conf.in
+ [ "/modules/rewrite/escaping/local_b/foo/bar/%20baz%0d" => "foo%2fbar%2f+baz%0d"], # this is why [B] sucks
+ [ "/modules/rewrite/escaping/local_b_justslash/foo/bar/%20baz/" => "foo%2fbar%2f baz%2f"], # test basic B=/
+);
+if (have_min_apache_version('2.4.57')) {
+ # [BCTLS] / [BNE]
+ push(@bflags, (
+ [ "/modules/rewrite/escaping/local_bctls/foo/bar/%20baz/%0d" => "foo/bar/+baz/%0d"], # spaces and ctls only
+ [ "/modules/rewrite/escaping/local_bctls_nospace/foo/bar/%20baz/%0d" => "foo/bar/ baz/%0d"], # ctls but keep space
+ [ "/modules/rewrite/escaping/local_bctls_andslash/foo/bar/%20baz/%0d" => "foo%2fbar%2f+baz%2f%0d"], # not realistic, but opt in to slashes
+ [ "/modules/rewrite/escaping/local_b_noslash/foo/bar/%20baz/%0d" => "foo/bar/+baz/%0d"], # negate something from [B]
+ ));
+}
+
if (!have_min_apache_version('2.4.19')) {
# PR 50447, server context
push @todo, 26
@@ -26,8 +69,11 @@ if (!have_min_apache_version('2.4')) {
# Specific tests for PR 58231
my $vary_header_tests = (have_min_apache_version("2.4.30") ? 9 : 0) + (have_min_apache_version("2.4.29") ? 4 : 0);
+my $cookie_tests = have_min_apache_version("2.4.47") ? 6 : 0;
+my @redirects = map {$_->[2] ? $_ : ()} @redirects_all;
-plan tests => @map * @num + 16 + $vary_header_tests, todo => \@todo, need_module 'rewrite';
+plan tests => @map * @num + 16 + $vary_header_tests + $cookie_tests + scalar(@escapes) + scalar(@redirects) + scalar(@bflags),
+ todo => \@todo, need_module 'rewrite';
foreach (@map) {
foreach my $n (@num) {
@@ -128,6 +174,7 @@ if (have_min_apache_version('2.4')) {
if (have_min_apache_version("2.4.29")) {
# PR 58231: Vary:Host header (was) mistakenly added to the response
+ # XXX: If LWP uses http2, this can result in "Host: localhost, test1"
$r = GET("/modules/rewrite/vary1.html", "Host" => "test1");
ok t_cmp($r->content, qr/VARY2/, "Correct internal redirect happened, OK");
ok t_cmp($r->header("Vary"), qr/(?!.*Host.*)/, "Vary:Host header not added, OK");
@@ -168,3 +215,46 @@ if (have_min_apache_version("2.4.30")) {
ok t_cmp($r->content, qr/VARY4/, "Correct internal redirect happened, OK");
ok t_cmp($r->header("Vary"), qr/(?!.*Host.*)/, "Vary:Host header not added, OK");
}
+
+if (have_min_apache_version("2.4.47")) {
+ $r = GET("/modules/rewrite/cookie/");
+ ok t_cmp($r->header("Set-Cookie"), qr/(?!.*SameSite=.*)/, "samesite not present with no arg");
+ $r = GET("/modules/rewrite/cookie/0");
+ ok t_cmp($r->header("Set-Cookie"), qr/(?!.*SameSite=.*)/, "samesite not present with 0");
+ $r = GET("/modules/rewrite/cookie/false");
+ ok t_cmp($r->header("Set-Cookie"), qr/(?!.*SameSite=.*)/, "samesite not present with false");
+ $r = GET("/modules/rewrite/cookie/none");
+ ok t_cmp($r->header("Set-Cookie"), qr/SameSite=none/, "samesite=none");
+ $r = GET("/modules/rewrite/cookie/lax");
+ ok t_cmp($r->header("Set-Cookie"), qr/SameSite=lax/, "samesite=lax");
+ $r = GET("/modules/rewrite/cookie/foo");
+ ok t_cmp($r->header("Set-Cookie"), qr/SameSite=foo/, "samesite=foo");
+}
+
+
+foreach my $t (@escapes) {
+ my $url= $t->[0];
+ my $expect = $t->[1];
+ t_debug "Check $url for $expect\n";
+ $r = GET($url, redirect_ok => 0);
+ ok t_cmp $r->code, $expect;
+}
+foreach my $t (@bflags) {
+ my $url= $t->[0];
+ my $expect= $t->[1];
+ t_debug "Check $url for $expect\n";
+ $r = GET($url, redirect_ok => 0);
+ t_debug("rewritten query '" . $r->header("rewritten-query") . "'");
+ ok t_cmp $r->header("rewritten-query"), $expect;
+}
+
+foreach my $t (@redirects) {
+ my $url= $t->[0];
+ my $expect= $t->[1];
+ t_debug "Check $url for redir $expect\n";
+ $r = GET($url, redirect_ok => 0);
+ my $loc = $r->header("location");
+ t_debug " redirect is $loc";
+ ok $loc =~ /$expect/;
+}
+
diff --git a/debian/perl-framework/t/modules/sed.t b/debian/perl-framework/t/modules/sed.t
new file mode 100644
index 0000000..6ab1ee1
--- /dev/null
+++ b/debian/perl-framework/t/modules/sed.t
@@ -0,0 +1,48 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil;
+
+my @ts = (
+ # see t/conf/extra.conf.in
+ { url => "/apache/sed/out-foo/foobar.html", content => 'barbar', msg => "sed output filter", code => '200' },
+ # error after status sent
+ { url => "/apache/sed-echo/out-foo-grow/foobar.html", content => "", msg => "sed output filter too large", code => '200', body=>"foo" x (8192*1024), resplen=>0},
+ { url => "/apache/sed-echo/input", content => 'barbar', msg => "sed input filter", code => '200', body=>"foobar" },
+ { url => "/apache/sed-echo/input", content => undef, msg => "sed input filter", code => '200', body=>"foo" x (1024)},
+ # fixme: returns 400 default error doc for some people instead
+ # { url => "/apache/sed-echo/input", content => '!!!ERROR!!!', msg => "sed input filter", code => '200', skippable=>true body=>"foo" x (1024*4096)}
+);
+
+my $tests = 2*scalar @ts;
+
+plan tests => $tests, need 'LWP::Protocol::AnyEvent::http', need_module('sed');
+
+# Hack to allow streaming of data in/out of mod_echo
+require LWP::Protocol::AnyEvent::http;
+
+for my $t (@ts) {
+ my $req;
+ if (defined($t->{'body'})) {
+ t_debug "posting body of size ". length($t->{'body'});
+ $req = POST $t->{'url'}, content => $t->{'body'};
+ t_debug "... posted body of size ". length($t->{'body'});
+ }
+ else {
+ $req = GET $t->{'url'};
+ }
+ t_debug "Content Length " . length $req->content;
+ ok t_cmp($req->code, $t->{'code'}, "status code for " . $t->{'url'});
+ if (defined($t->{content})) {
+ my $content = $req->content;
+ chomp($content);
+ ok t_cmp($content, $t->{content}, $t->{msg});
+ }
+ else {
+ ok "no body check";
+ }
+}
+
+
diff --git a/debian/perl-framework/t/modules/session.t b/debian/perl-framework/t/modules/session.t
index 91428fe..617239c 100644
--- a/debian/perl-framework/t/modules/session.t
+++ b/debian/perl-framework/t/modules/session.t
@@ -24,7 +24,7 @@ my @todo = (
);
# Until the fix for PR 57300 is backported, sessions are always saved.
-if (!have_min_apache_version('2.5')) {
+if (!have_min_apache_version('2.4.41')) {
my @todo_backport = ( 8, 18, 38, 43, 48, 58, 63, 133 );
push(@todo, @todo_backport);
}
@@ -172,8 +172,8 @@ check_get 'Keep non-expired session',
check_post 'Session writable after expired', '/on/expire?expiry=1',
$create_session, $session, 1, 1;
-# SessionExpiryUpdateInterval directive - new in 2.5
-if (have_module('version') && have_min_apache_version('2.5')) {
+# SessionExpiryUpdateInterval directive - new in 2.4.41
+if (have_module('version') && have_min_apache_version('2.4.41')) {
my $max_expiry = expiry_from_seconds(time() + 100);
my $threshold_expiry = expiry_from_seconds(time() + 40);
diff --git a/debian/perl-framework/t/modules/setenvif.t b/debian/perl-framework/t/modules/setenvif.t
index 82c4bf4..cb561c2 100644
--- a/debian/perl-framework/t/modules/setenvif.t
+++ b/debian/perl-framework/t/modules/setenvif.t
@@ -167,10 +167,16 @@ write_htaccess("SetEnvIfExpr \"%{REQUEST_URI} =~ /\.\(sh\)tmlXXX\$/\" VAR_ONE=\$
$body = GET_BODY $page;
ok t_cmp($body, "1:(none)\n2:(none)\n3:(none)\n");
-## test SetEnvIfExpr with replacement when regex is REQUIRED to NOT match ##
-write_htaccess("SetEnvIfExpr \"%{REQUEST_URI} !~ /\.\(sh\)tmlXXX\$/\" VAR_ONE=\$0 VAR_TWO=\$1");
-$body = GET_BODY $page;
-ok t_cmp($body, "1:\$0\n2:\$1\n3:(none)\n");
+if (need_min_apache_version("2.4.38")) {
+ ## test SetEnvIfExpr with replacement when regex is REQUIRED to NOT match ##
+ write_htaccess("SetEnvIfExpr \"%{REQUEST_URI} !~ /\.\(sh\)tmlXXX\$/\" VAR_ONE=\$0 VAR_TWO=\$1");
+ $body = GET_BODY $page;
+ ok t_cmp($body, "1:\$0\n2:\$1\n3:(none)\n");
+}
+else {
+ # Skip for versions without r1786235 backported
+ skip "skipping inverted match test with version <2.4.38"
+}
## i think this should work, but it doesnt.
## leaving it commented now pending investigation.
diff --git a/debian/perl-framework/t/modules/speling.t b/debian/perl-framework/t/modules/speling.t
index 25eb54e..85af159 100644
--- a/debian/perl-framework/t/modules/speling.t
+++ b/debian/perl-framework/t/modules/speling.t
@@ -2,8 +2,8 @@ use strict;
use warnings FATAL => 'all';
use Apache::Test;
-use Apache::TestUtil;
use Apache::TestRequest;
+use Apache::TestUtil;
my @testcasespaths = (
['/modules/speling/nocase/'],
@@ -17,7 +17,6 @@ my @testcases = (
['goood.html', "insertion", 301, 404],
['godo.html', "transposition", 301, 404],
['go_d.html', "wrong character", 301, 404],
- ['GOOD.html', "case", 301, 301],
['good.wrong_ext', "wrong extension", 300, 300],
['GOOD.wrong_ext', "NC wrong extension", 300, 300],
@@ -26,9 +25,15 @@ my @testcases = (
['dogo.html', "double transposition", 404, 404],
['XooX.html', "double wrong character", 404, 404],
- ['several0.html', "multiple choise", 300, 404],
+ ['several0.html', "multiple choice", 300, 404],
);
+# macOS HFS is case-insensitive but case-preserving so the below tests
+# would cause misleading failures
+if ($^O ne "darwin") {
+ push (@testcases, ['GOOD.html', "case", 301, 301]);
+}
+
plan tests => scalar @testcasespaths * scalar @testcases * 2, need 'mod_speling';
my $r;
@@ -40,6 +45,7 @@ local $Apache::TestRequest::RedirectOK = 0;
foreach my $p (@testcasespaths) {
foreach my $t (@testcases) {
##
+ #local $Apache::TestRequest::RedirectOK = 0;
$r = GET($p->[0] . $t->[0]);
# Checking for return code
diff --git a/debian/perl-framework/t/modules/substitute.t b/debian/perl-framework/t/modules/substitute.t
index cc8c153..0f111c0 100644
--- a/debian/perl-framework/t/modules/substitute.t
+++ b/debian/perl-framework/t/modules/substitute.t
@@ -15,6 +15,8 @@ my $B = chr(0x02);
my $F = chr(0x06);
my $P = chr(0x10);
+my @simple_cases = ();
+
my @test_cases = (
[ "f${B}o${P}ofoo" => 's/foo/bar/' ],
[ "f${B}o${P}ofoo" => 's/fo/fa/', 's/fao/bar/' ],
@@ -40,7 +42,10 @@ if (have_min_apache_version("2.3.5")) {
[ "foobar" => 's/(oo)b/\d$1/' ];
}
-plan tests => scalar @test_cases,
+if (have_min_apache_version("2.4.42")) {
+ push @simple_cases, [ "foo\nbar" => 's/foo.*/XXX$0XXX', "XXXfooXXX\nbar" ],
+}
+plan tests => scalar @test_cases + scalar @simple_cases,
need need_lwp,
need_module('mod_substitute'),
need_module('mod_bucketeer');
@@ -84,6 +89,18 @@ foreach my $t (@test_cases) {
ok($ok);
}
+foreach my $t (@simple_cases) {
+ my ($content, $rule, $expect) = @{$t};
+ write_testfile($content);
+ write_htaccess($rule);
+ my $response = GET('/modules/substitute/test.txt');
+ my $rc = $response->code;
+ my $got = $response->content;
+ my $ok = ($rc == 200) && ($got eq $expect);
+ print "got $rc '$got'", ($ok ? ": OK\n" : ", expected '$expect'\n");
+
+ ok($ok);
+}
exit 0;
### sub routines
diff --git a/debian/perl-framework/t/modules/usertrack.t b/debian/perl-framework/t/modules/usertrack.t
index 449d5b5..d9f62da 100644
--- a/debian/perl-framework/t/modules/usertrack.t
+++ b/debian/perl-framework/t/modules/usertrack.t
@@ -15,7 +15,7 @@ my @testcases = (
my $iters = 100;
my %cookiex = ();
-plan tests => (scalar (@testcases) * 2 + 2) * $iters + 1, need 'mod_usertrack';
+plan tests => (scalar (@testcases) * 2 + 2) * $iters + 1 + 3, need 'mod_usertrack';
foreach (1..$iters) {
my $nb_req = 1;
@@ -60,3 +60,15 @@ foreach (1..$iters) {
# Check the overall number of cookies generated
ok ((scalar (keys %cookiex)) == ($iters * 2));
+
+# Check that opt-in flags aren't set
+my $r = GET("/modules/usertrack/foo.html");
+ok t_cmp($r->code, 200, "Checking return code is '200'");
+# Checking for content
+my $setcookie = $r->header('Set-Cookie');
+t_debug("$setcookie");
+ok defined $setcookie;
+$setcookie =~ m/(Secure|HTTPonly|SameSite)/i;
+ok t_cmp($1, undef);
+
+
diff --git a/debian/perl-framework/t/php-fpm/log/.empty b/debian/perl-framework/t/php-fpm/log/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/php-fpm/log/.empty
diff --git a/debian/perl-framework/t/php-fpm/pools/www/.empty b/debian/perl-framework/t/php-fpm/pools/www/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/php-fpm/pools/www/.empty
diff --git a/debian/perl-framework/t/php-fpm/run/.empty b/debian/perl-framework/t/php-fpm/run/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/php-fpm/run/.empty
diff --git a/debian/perl-framework/t/php-fpm/var/log/.empty b/debian/perl-framework/t/php-fpm/var/log/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/debian/perl-framework/t/php-fpm/var/log/.empty
diff --git a/debian/perl-framework/t/security/CVE-2009-3555.t b/debian/perl-framework/t/security/CVE-2009-3555.t
index 636fee5..bd0c413 100644
--- a/debian/perl-framework/t/security/CVE-2009-3555.t
+++ b/debian/perl-framework/t/security/CVE-2009-3555.t
@@ -18,6 +18,12 @@ Apache::TestRequest::set_client_cert("client_ok");
Apache::TestRequest::module('mod_ssl');
my $sock = Apache::TestRequest::vhost_socket('mod_ssl');
+
+if ($sock && $sock->connected && $sock->get_sslversion() eq "TLSv1_3") {
+ skip "Skipping test for TLSv1.3" foreach(1..4);
+ exit;
+}
+
ok $sock && $sock->connected;
diff --git a/debian/perl-framework/t/ssl/ocsp.t b/debian/perl-framework/t/ssl/ocsp.t
index 9e0d776..8ec8505 100644
--- a/debian/perl-framework/t/ssl/ocsp.t
+++ b/debian/perl-framework/t/ssl/ocsp.t
@@ -30,24 +30,35 @@ my $r;
sok {
$r = GET $url, cert => undef;
- my $message = $r->message() || '';
+ my $message = $r->content() || '';
my $warning = $r->header('Client-Warning') || '';
+ print "warning: $warning\n";
+ print "message: $message";
+ print "response:\n";
print $r->as_string;
$r->code == 500 && $warning =~ 'Internal response' &&
- $message =~ /alert handshake failure|read failed/;
+ $message =~ /alert handshake failure|read failed|closed connection without sending any data/;
};
sok {
$r = GET $url, cert => 'client_ok';
+ my $warning = $r->header('Client-Warning') || '';
+ my $message = $r->content() || '';
+ print "warning: $warning\n";
+ print "message: $message";
+ print "response:\n";
print $r->as_string;
$r->code == 200;
};
sok {
$r = GET $url, cert => 'client_revoked';
- my $message = $r->message() || '';
+ my $message = $r->content() || '';
my $warning = $r->header('Client-Warning') || '';
+ print "warning: $warning\n";
+ print "message: $message";
+ print "response:\n";
print $r->as_string;
$r->code == 500 && $warning =~ 'Internal response' &&
- $message =~ /alert certificate revoked|read failed/;
+ $message =~ /alert certificate revoked|read failed|closed connection without sending any data/;
};
diff --git a/debian/perl-framework/t/ssl/pha.t b/debian/perl-framework/t/ssl/pha.t
new file mode 100644
index 0000000..2e2a763
--- /dev/null
+++ b/debian/perl-framework/t/ssl/pha.t
@@ -0,0 +1,47 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestRequest;
+use Apache::TestUtil;
+use IO::Socket::SSL;
+
+# This is the equivalent of pr12355.t for TLSv1.3.
+
+Apache::TestRequest::user_agent(ssl_opts => {SSL_version => 'TLSv13'});
+Apache::TestRequest::scheme('https');
+Apache::TestRequest::user_agent_keepalive(1);
+
+my $r = GET "/";
+
+if (!$r->is_success) {
+ print "1..0 # skip: TLSv1.3 not supported";
+ exit 0;
+}
+
+if (!defined &IO::Socket::SSL::can_pha || !IO::Socket::SSL::can_pha()) {
+ print "1..0 # skip: PHA not supported by IO::Socket::SSL < 2.061";
+ exit 0;
+}
+
+plan tests => 4, need_min_apache_version("2.4.47");
+
+$r = GET("/verify/", cert => undef);
+ok t_cmp($r->code, 403, "access must be denied without client certificate");
+
+# SSLRenegBufferSize 10 for this location which should mean a 413
+# error.
+$r = POST("/require/small/perl_echo.pl", content => 'y'x101,
+ cert => 'client_ok');
+ok t_cmp($r->code, 413, "PHA reneg body buffer size restriction works");
+
+# Reset to use a new connection.
+Apache::TestRequest::user_agent(reset => 1);
+Apache::TestRequest::user_agent(ssl_opts => {SSL_version => 'TLSv13'});
+Apache::TestRequest::scheme('https');
+
+$r = POST("/verify/modules/cgi/perl_echo.pl", content => 'x'x10000,
+ cert => 'client_ok');
+
+ok t_cmp($r->code, 200, "PHA works with POST body");
+ok t_cmp($r->content, $r->request->content, "request body matches response");
diff --git a/debian/perl-framework/t/ssl/pr12355.t b/debian/perl-framework/t/ssl/pr12355.t
index 51be00f..8444b3f 100644
--- a/debian/perl-framework/t/ssl/pr12355.t
+++ b/debian/perl-framework/t/ssl/pr12355.t
@@ -7,11 +7,26 @@ use Apache::TestUtil;
plan tests => 10, need 'ssl', need_min_apache_version('2.0');
-Apache::TestRequest::user_agent( ssl_opts => { SSL_cipher_list => 'ALL'});
-Apache::TestRequest::user_agent_keepalive(1);
+my $r;
+
+Apache::TestRequest::user_agent(ssl_opts => {SSL_version => 'TLSv13'});
Apache::TestRequest::scheme('https');
-my $r;
+$r = GET "/";
+my $tls13_works = $r->is_success;
+
+# Forget the above user agent settings, start fresh
+Apache::TestRequest::user_agent(reset => 1);
+
+# If TLS 1.3 worked, downgrade to TLS 1.2, otherwise use what works.
+if ($tls13_works) {
+ t_debug "Downgrading to TLSv12";
+ Apache::TestRequest::user_agent(ssl_opts => {SSL_cipher_list => 'ALL', SSL_version => 'TLSv12'});
+} else {
+ Apache::TestRequest::user_agent(ssl_opts => {SSL_cipher_list => 'ALL'});
+}
+Apache::TestRequest::user_agent_keepalive(1);
+Apache::TestRequest::scheme('https');
# Send a series of POST requests with varying size request bodies.
# Alternate between the location which requires a AES128-SHA ciphersuite
diff --git a/debian/perl-framework/t/ssl/pr43738.t b/debian/perl-framework/t/ssl/pr43738.t
index 0814a39..6bf9ccf 100644
--- a/debian/perl-framework/t/ssl/pr43738.t
+++ b/debian/perl-framework/t/ssl/pr43738.t
@@ -9,11 +9,26 @@ plan tests => 4,
need 'ssl', need_module('actions'),
need_min_apache_version('2.2.7');
-Apache::TestRequest::user_agent( ssl_opts => { SSL_cipher_list => 'ALL'});
-Apache::TestRequest::user_agent_keepalive(1);
+my $r;
+
+Apache::TestRequest::user_agent(ssl_opts => {SSL_version => 'TLSv13'});
Apache::TestRequest::scheme('https');
-my $r;
+$r = GET "/";
+my $tls13_works = $r->is_success;
+
+# Forget the above user agent settings, start fresh
+Apache::TestRequest::user_agent(reset => 1);
+
+# If TLS 1.3 worked, downgrade to TLS 1.2, otherwise use what works.
+if ($tls13_works) {
+ t_debug "Downgrading to TLSv12";
+ Apache::TestRequest::user_agent(ssl_opts => {SSL_cipher_list => 'ALL', SSL_version => 'TLSv12'});
+} else {
+ Apache::TestRequest::user_agent(ssl_opts => {SSL_cipher_list => 'ALL'});
+}
+Apache::TestRequest::user_agent_keepalive(1);
+Apache::TestRequest::scheme('https');
# Variation of the PR 12355 test which breaks per PR 43738.
diff --git a/debian/perl-framework/t/ssl/proxy.t b/debian/perl-framework/t/ssl/proxy.t
index bbeddb6..bec84b4 100644
--- a/debian/perl-framework/t/ssl/proxy.t
+++ b/debian/perl-framework/t/ssl/proxy.t
@@ -7,14 +7,18 @@ use Apache::TestUtil;
use Apache::TestCommon ();
my %frontend = (
- proxy_http_https => 'http',
- proxy_https_https => 'https',
- proxy_https_http => 'https',
+ proxy_http_https => 'http',
+ proxy_https_https => 'https',
+ proxy_https_http => 'https',
+ proxy_http_https_proxy_section => 'http',
+ proxy_https_https_proxy_section => 'https',
);
my %backend = (
- proxy_http_https => 'https',
- proxy_https_https => 'https',
- proxy_https_http => 'http',
+ proxy_http_https => 'https',
+ proxy_https_https => 'https',
+ proxy_https_http => 'http',
+ proxy_http_https_proxy_section => 'https',
+ proxy_https_https_proxy_section => 'https',
);
my $num_modules = scalar keys %frontend;
diff --git a/debian/perl-framework/t/ssl/varlookup.t b/debian/perl-framework/t/ssl/varlookup.t
index 126d442..e00a143 100644
--- a/debian/perl-framework/t/ssl/varlookup.t
+++ b/debian/perl-framework/t/ssl/varlookup.t
@@ -103,6 +103,10 @@ if (not have_min_apache_version('2.4.32')) {
@vars = grep(!/_RAW/, @vars);
}
+if (not have_min_apache_version('2.5.1')) {
+ @vars = grep(!/_B64CERT/, @vars);
+}
+
plan tests => scalar (@vars), need need_lwp, need_module('test_ssl');
for my $key (@vars) {
@@ -254,7 +258,8 @@ SSL_CLIENT_A_KEY 'rsaEncryption'
SSL_SERVER_A_KEY qr(^[rd]saEncryption$)
SSL_CLIENT_CERT qr(^-----BEGIN CERTIFICATE-----)
SSL_SERVER_CERT qr(^-----BEGIN CERTIFICATE-----)
-#SSL_CLIENT_CERT_CHAINn
+SSL_CLIENT_B64CERT qr(^[a-zA-Z0-9+/]{64,}={0,2}$)
+SSL_SERVER_B64CERT qr(^[a-zA-Z0-9+/]{64,}={0,2}$)
SSL_CLIENT_VERIFY 'SUCCESS'
SSL_VERSION_LIBRARY
SSL_VERSION_INTERFACE