Mercurial > hg > nginx-tests
annotate h2_server_tokens.t @ 1105:a073a545413d
Tests: stream upstream tests for fast peer recovery.
Now, a peer is considered recovered after a successful TCP connection is
established to it. See 54cf51c4f07a for details.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 29 Dec 2016 19:30:29 +0300 |
parents | 882267679006 |
children | a6ffc722dfcb |
rev | line source |
---|---|
880
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
2 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
3 # (C) Andrey Zelenkov |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
5 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
6 # Tests for HTTP/2 protocol with server_tokens directive. |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
7 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
9 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
11 use strict; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
12 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
14 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
16 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::HTTP2; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
20 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
22 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
25 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http http_v2 rewrite/)->plan(9) |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
28 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
30 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
31 daemon off; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
32 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
33 events { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
34 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
35 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
36 http { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_HTTP%% |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
38 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
39 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
40 listen 127.0.0.1:8080 http2; |
880
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
41 server_name localhost; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
42 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
43 location /200 { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
44 return 200; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
45 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
46 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
47 location /404 { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
48 return 404; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
49 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
50 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
51 location /off { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
52 server_tokens off; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
53 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
54 location /off/200 { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
55 return 200; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
56 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
57 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
58 location /off/404 { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
59 return 404; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
60 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
61 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
62 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
63 location /on { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
64 server_tokens on; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
65 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
66 location /on/200 { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
67 return 200; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
68 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
69 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
70 location /on/404 { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
71 return 404; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
72 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
73 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
74 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
75 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
76 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
77 EOF |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
78 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
79 $t->run(); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
80 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
81 ############################################################################### |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
82 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
83 like(header_server('/200'), qr/^nginx\/\d+\.\d+\.\d+$/, |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
84 'http2 tokens default 200'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
85 like(header_server('/404'), qr/^nginx\/\d+\.\d+\.\d+$/, |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
86 'http2 tokens default 404'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
87 like(body('/404'), qr/nginx\/\d+\.\d+\.\d+/, 'http2 tokens default 404 body'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
88 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
89 is(header_server('/off/200'), 'nginx', 'http2 tokens off 200'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
90 is(header_server('/off/404'), 'nginx', 'http2 tokens off 404'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
91 like(body('/off/404'), qr/nginx(?!\/)/, 'http2 tokens off 404 body'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
92 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
93 like(header_server('/on/200'), qr/^nginx\/\d+\.\d+\.\d+$/, |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
94 'http2 tokens on 200'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
95 like(header_server('/on/404'), qr/^nginx\/\d+\.\d+\.\d+$/, |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
96 'http2 tokens on 404'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
97 like(body('/on/404'), qr/nginx\/\d+\.\d+\.\d+/, 'http2 tokens on 404 body'); |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
98 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
99 ############################################################################### |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
100 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
101 sub header_server { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
102 my ($path) = shift; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
103 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
880
diff
changeset
|
104 my $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
880
diff
changeset
|
105 my $sid = $s->new_stream({ path => $path }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
880
diff
changeset
|
106 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
880
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
107 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
108 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
109 return $frame->{headers}->{'server'}; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
110 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
111 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
112 sub body { |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
113 my ($path) = shift; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
114 |
948
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
880
diff
changeset
|
115 my $s = Test::Nginx::HTTP2->new(); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
880
diff
changeset
|
116 my $sid = $s->new_stream({ path => $path }); |
4dc302d8e04f
Tests: changed HTTP2 package to act as a class.
Sergey Kandaurov <pluknet@nginx.com>
parents:
880
diff
changeset
|
117 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]); |
880
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
118 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
119 my ($frame) = grep { $_->{type} eq "DATA" } @$frames; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
120 return $frame->{'data'}; |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
121 } |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
122 |
697fc80b8606
Tests: added HTTP/2 tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
123 ############################################################################### |