expcov report - Generated Sat Oct 15 21:39:18 2016

 Index  Statistics  Last 
Directory./modules/filters
Filenamemod_filter.c
ModifiedFri Sep 9 00:59:38 2011

Pass Half Fail Excluded Total
Function
2
15.38%
11
84.62%
0
0.00%
13
100%
Expressions
6
1.12%
531
98.88%
0
0.00%
537
100%
Conditions
0
0.00%
0
0.00%
66
100.00%
0
0.00%
66
100%
MC/DC
0
0.00%
14
100.00%
0
0.00%
14
100%
Branches

if
0
0.00%
0
0.00%
81
100.00%
0
0.00%
81
100%
for
0
0.00%
0
0.00%
14
100.00%
0
0.00%
14
100%
while
0
0.00%
0
0.00%
0
0.00%
0
0.00%
0
100%
case
0
0.00%
0
0.00%
30
100.00%
0
0.00%
30
100%

1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements.  See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License.  You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#define APR_WANT_STRFUNC
18#include "apr_want.h"
19#include "apr_lib.h"
20#include "apr_strings.h"
21#include "apr_hash.h"
22#include "httpd.h"
23#include "http_config.h"
24#include "http_request.h"
25#include "http_log.h"
26#include "util_filter.h"
27
28module AP_MODULE_DECLARE_DATA filter_module;
29
30/**
31 * @brief is a filter provider, as defined and implemented by mod_filter.
32 *
33 * The struct is a linked list, with dispatch criteria
34 * defined for each filter.  The provider implementation itself is a
35 * (2.0-compatible) ap_filter_rec_t* frec.
36 */
37struct ap_filter_provider_t {
38    /** How to match this provider to filter dispatch criterion */
39    enum {
40        STRING_MATCH,
41        STRING_CONTAINS,
42        REGEX_MATCH,
43        INT_EQ,
44        INT_LT,
45        INT_LE,
46        INT_GT,
47        INT_GE,
48        DEFINED
49    } match_type;
50
51    /** negation on match_type */
52    int not;
53
54    /** The dispatch match itself - union member depends on match_type */
55    union {
56        const char *string;
57        ap_regex_t *regex;
58        int         number;
59    } match;
60
61    /** The filter that implements this provider */
62    ap_filter_rec_t *frec;
63
64    /** The next provider in the list */
65    ap_filter_provider_t *next;
66
67    /** Dispatch criteria for filter providers */
68    enum {
69        HANDLER,
70        REQUEST_HEADERS,
71        RESPONSE_HEADERS,
72        SUBPROCESS_ENV,
73        CONTENT_TYPE
74    } dispatch;
75
76    /** Match value for filter providers */
77    const char* value;
78};
79
80/** we need provider_ctx to save ctx values set by providers in filter_init */
81typedef struct provider_ctx provider_ctx;
82struct provider_ctx {
83    ap_filter_provider_t *provider;
84    void *ctx;
85    provider_ctx *next;
86};
87typedef struct {
88    ap_out_filter_func func;
89    void *fctx;
90    provider_ctx *init_ctx;
91} harness_ctx;
92
93typedef struct mod_filter_chain {
94    const char *fname;
95    struct mod_filter_chain *next;
96} mod_filter_chain;
97
98typedef struct {
99    apr_hash_t *live_filters;
100    mod_filter_chain *chain;
101} mod_filter_cfg;
102
103typedef struct {
104    const char* range ;
105} mod_filter_ctx ;
106
107
108static void filter_trace : call=0
f
ilter_trace(conn_rec *c, int debug, const char *fname,
109                         apr_bucket_brigade *bb)
110{
111    apr_bucket *b;
112
113    switch : pass=0
s
witch (debug : modules/filters/mod_filter.c line=108 column=43
d
ebug) {
114    case : true=0, false=0
c
ase 0:        /* normal, operational use */
115        return : pass=0
r
eturn;
116    case : true=0, false=0
c
ase 1:        /* mod_diagnostics level */
117        ap_log_cerror : enter=0, leave=0

ap_log_cerror : include/http_log.h line=245 column=18
a
p_log_cerror(APLOG_MARK, APLOG_DEBUG, 0, c : modules/filters/mod_filter.c line=108 column=36
c
, "%s", fname : modules/filters/mod_filter.c line=108 column=62
f
name);
118        for : true=0, false=0
f
or (b : modules/filters/mod_filter.c line=111 column=17
b
 = : pass=0
=
 APR_BRIGADE_FIRST(bb : modules/filters/mod_filter.c line=109 column=46
b
b);
119             b : modules/filters/mod_filter.c line=111 column=17
b
 != : true=0, false=0
!
= APR_BRIGADE_SENTINEL(bb : modules/filters/mod_filter.c line=109 column=46
b
b);
120             b : modules/filters/mod_filter.c line=111 column=17
b
 = : pass=0
=
 APR_BUCKET_NEXT(b : modules/filters/mod_filter.c line=111 column=17
b
)) {
121
122            ap_log_cerror : enter=0, leave=0

ap_log_cerror : include/http_log.h line=245 column=18
a
p_log_cerror(APLOG_MARK, APLOG_DEBUG, 0, c : modules/filters/mod_filter.c line=108 column=36
c
,
123                          "%s: type: %s, length: %" APR_SIZE_T_FMT,
124                          fname : modules/filters/mod_filter.c line=108 column=62
f
name, b : modules/filters/mod_filter.c line=111 column=17
b
-> : enter=0, leave=0
-
>type : /usr/include/apr-1/apr_buckets.h line=228 column=30 type-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_buckets.h line=135 column=17 name conditional operator : true=0, false=0
?
 b : modules/filters/mod_filter.c line=111 column=17
b
-> : enter=0, leave=0
-
>type : /usr/include/apr-1/apr_buckets.h line=228 column=30 type-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_buckets.h line=135 column=17 name : "(unknown)",
125                          b : modules/filters/mod_filter.c line=111 column=17
b
-> : enter=0, leave=0
-
>length : /usr/include/apr-1/apr_buckets.h line=234 column=16 length);
126        }
127        break : pass=0
b
reak;
128    }
129}
130
131static int filter_init : call=0
f
ilter_init(ap_filter_t *f)
132{
133    ap_filter_provider_t *p;
134    provider_ctx *pctx;
135    int err;
136    ap_filter_rec_t *filter = f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>frec : include/util_filter.h line=265 column=22
f
rec;
137
138    harness_ctx *fctx = apr_pcalloc(f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, sizeof(harness_ctx));
139    for : true=0, false=0
f
or (p : modules/filters/mod_filter.c line=133 column=27
p
 = : pass=0
=
 filter : modules/filters/mod_filter.c line=136 column=22
f
ilter-> : enter=0, leave=0
-
>providers : include/util_filter.h line=245 column=27
p
roviders; p : modules/filters/mod_filter.c line=133 column=27
p
p : modules/filters/mod_filter.c line=133 column=27
p
 = : pass=0
=
 p : modules/filters/mod_filter.c line=133 column=27
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=65 column=27
n
ext) {
140        if : true=0, false=0
i
f (p : modules/filters/mod_filter.c line=133 column=27
p
-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>filter_init_func : include/util_filter.h line=232 column=25
f
ilter_init_func == : true=0, false=0
=
filter_init : modules/filters/mod_filter.c line=131 column=12
f
ilter_init) {
141            ap_log_cerror : enter=0, leave=0

ap_log_cerror : include/http_log.h line=245 column=18
a
p_log_cerror(APLOG_MARK, APLOG_ERR, 0, f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>c : include/util_filter.h line=282 column=15
c
,
142                          "Chaining of FilterProviders not supported");
143            return : pass=0
r
eturn HTTP_INTERNAL_SERVER_ERROR;
144        }
145        else if : true=0, false=0
i
f (p : modules/filters/mod_filter.c line=133 column=27
p
-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>filter_init_func : include/util_filter.h line=232 column=25
f
ilter_init_func) {
146            f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx = : enter=0, leave=0
=
 NULL;
147            if : true=0, false=0
i
f ((err : modules/filters/mod_filter.c line=135 column=9
e
rr = : pass=0
=
 filter_init_func : enter=0, leave=0

p : modules/filters/mod_filter.c line=133 column=27
filter_init_func : include/util_filter.h line=232 column=25
p
-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>filter_init_func : include/util_filter.h line=232 column=25
f
ilter_init_func(f : modules/filters/mod_filter.c line=131 column=37
f
)) != : true=0, false=0
!
= OK) {
148                ap_log_cerror : enter=0, leave=0

ap_log_cerror : include/http_log.h line=245 column=18
a
p_log_cerror(APLOG_MARK, APLOG_ERR, 0, f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>c : include/util_filter.h line=282 column=15
c
,
149                              "filter_init for %s failed", p : modules/filters/mod_filter.c line=133 column=27
p
-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>name : include/util_filter.h line=219 column=17
n
ame);
150                return : pass=0
r
eturn err : modules/filters/mod_filter.c line=135 column=9
e
rr;   /* if anyone errors out here, so do we */
151            }
152            if : true=0, false=0
i
f (f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx != : true=0, false=0
!
= NULL) {
153                /* the filter init function set a ctx - we need to record it */
154                pctx : modules/filters/mod_filter.c line=134 column=19
p
ctx = : pass=0
=
 apr_pcalloc(f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, sizeof(provider_ctx));
155                pctx : modules/filters/mod_filter.c line=134 column=19
p
ctx-> : enter=0, leave=0
-
>provider : modules/filters/mod_filter.c line=83 column=27
p
rovider = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=133 column=27
p
;
156                pctx : modules/filters/mod_filter.c line=134 column=19
p
ctx-> : enter=0, leave=0
-
>ctx : modules/filters/mod_filter.c line=84 column=11
c
tx = : enter=0, leave=0
=
 f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx;
157                pctx : modules/filters/mod_filter.c line=134 column=19
p
ctx-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=85 column=19
n
ext = : enter=0, leave=0
=
 fctx : modules/filters/mod_filter.c line=138 column=18
f
ctx-> : enter=0, leave=0
-
>init_ctx : modules/filters/mod_filter.c line=90 column=19
i
nit_ctx;
158                fctx : modules/filters/mod_filter.c line=138 column=18
f
ctx-> : enter=0, leave=0
-
>init_ctx : modules/filters/mod_filter.c line=90 column=19
i
nit_ctx = : enter=0, leave=0
=
 pctx : modules/filters/mod_filter.c line=134 column=19
p
ctx;
159            }
160        }
161    }
162    f : modules/filters/mod_filter.c line=131 column=37
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx = : enter=0, leave=0
=
 fctx : modules/filters/mod_filter.c line=138 column=18
f
ctx;
163    return : pass=0
r
eturn OK;
164}
165
166static int filter_lookup : call=0
f
ilter_lookup(ap_filter_t *f, ap_filter_rec_t *filter)
167{
168    ap_filter_provider_t *provider;
169    const char *str = NULL;
170    char *str1;
171    int match;
172    unsigned int proto_flags;
173    request_rec *r = f : modules/filters/mod_filter.c line=166 column=39
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
;
174    harness_ctx *ctx = f : modules/filters/mod_filter.c line=166 column=39
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx;
175    provider_ctx *pctx;
176    mod_filter_ctx *rctx = ap_get_module_config(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>request_config : include/httpd.h line=979 column=30
r
equest_config,
177                                                &filter_module : modules/filters/mod_filter.c line=28 column=31
f
ilter_module);
178
179    /* Check registered providers in order */
180    for : true=0, false=0
f
or (provider : modules/filters/mod_filter.c line=168 column=27
p
rovider = : pass=0
=
 filter : modules/filters/mod_filter.c line=166 column=59
f
ilter-> : enter=0, leave=0
-
>providers : include/util_filter.h line=245 column=27
p
roviders; provider : modules/filters/mod_filter.c line=168 column=27
p
rovider; provider : modules/filters/mod_filter.c line=168 column=27
p
rovider = : pass=0
=
 provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=65 column=27
n
ext) {
181        match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 1;
182        switch : pass=0
s
witch (provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch) {
183        case : true=0, false=0
c
ase REQUEST_HEADERS:
184            str : modules/filters/mod_filter.c line=169 column=17
s
tr = : pass=0
=
 apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>value : modules/filters/mod_filter.c line=77 column=17
v
alue);
185            break : pass=0
b
reak;
186        case : true=0, false=0
c
ase RESPONSE_HEADERS:
187            /* Try r->headers_out first, fall back on err_headers_out. */
188            str : modules/filters/mod_filter.c line=169 column=17
s
tr = : pass=0
=
 apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>value : modules/filters/mod_filter.c line=77 column=17
v
alue);
189            if : true=0, false=0
i
f (str : modules/filters/mod_filter.c line=169 column=17
s
tr) {
190                break : pass=0
b
reak;
191            }
192            str : modules/filters/mod_filter.c line=169 column=17
s
tr = : pass=0
=
 apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out, provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>value : modules/filters/mod_filter.c line=77 column=17
v
alue);
193            break : pass=0
b
reak;
194        case : true=0, false=0
c
ase SUBPROCESS_ENV:
195            str : modules/filters/mod_filter.c line=169 column=17
s
tr = : pass=0
=
 apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env, provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>value : modules/filters/mod_filter.c line=77 column=17
v
alue);
196            break : pass=0
b
reak;
197        case : true=0, false=0
c
ase CONTENT_TYPE:
198            str : modules/filters/mod_filter.c line=169 column=17
s
tr = : pass=0
=
 r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>content_type : include/httpd.h line=917 column=17
c
ontent_type;
199            break : pass=0
b
reak;
200        case : true=0, false=0
c
ase HANDLER:
201            str : modules/filters/mod_filter.c line=169 column=17
s
tr = : pass=0
=
 r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>handler : include/httpd.h line=919 column=17
h
andler;
202            break : pass=0
b
reak;
203        }
204
205        /* treat nulls so we don't have to check every strcmp individually
206         * Not sure if there's anything better to do with them
207         */
208        if : true=0, false=0
i
f (! : true=0, false=0
!
str : modules/filters/mod_filter.c line=169 column=17
s
tr) {
209            match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
210        }
211        /* we can't check for NULL in provider as that kills integer 0
212         * so we have to test each string/regexp case in the switch
213         */
214        else {
215            switch : pass=0
s
witch (provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type) {
216            case : true=0, false=0
c
ase STRING_MATCH:
217                if : true=0, false=0
i
f (strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(str : modules/filters/mod_filter.c line=169 column=17
s
tr, provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.string : modules/filters/mod_filter.c line=56 column=21
s
tring)) {
218                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
219                }
220                break : pass=0
b
reak;
221            case : true=0, false=0
c
ase STRING_CONTAINS:
222                str1 : modules/filters/mod_filter.c line=170 column=11
s
tr1 = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, str : modules/filters/mod_filter.c line=169 column=17
s
tr);
223                ap_str_tolower : enter=0, leave=0

ap_str_tolower : include/httpd.h line=1739 column=18
a
p_str_tolower(str1 : modules/filters/mod_filter.c line=170 column=11
s
tr1);
224                if : true=0, false=0
i
f (! : true=0, false=0
!
strstr : enter=0, leave=0

strstr : /usr/include/string.h line=342 column=14
s
trstr(str1 : modules/filters/mod_filter.c line=170 column=11
s
tr1, provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.string : modules/filters/mod_filter.c line=56 column=21
s
tring)) {
225                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
226                }
227                break : pass=0
b
reak;
228            case : true=0, false=0
c
ase REGEX_MATCH:
229                if : true=0, false=0
i
f (ap_regexec : enter=0, leave=0

ap_regexec : include/ap_regex.h line=119 column=17
a
p_regexec(provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.regex : modules/filters/mod_filter.c line=57 column=21
r
egex, str : modules/filters/mod_filter.c line=169 column=17
s
tr, 0, NULL, 0)
230                    == : true=0, false=0
=
AP_REG_NOMATCH : include/ap_regex.h line=81 column=3 AP_REG_NOMATCH) {
231                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
232                }
233                break : pass=0
b
reak;
234            case : true=0, false=0
c
ase INT_EQ:
235                if : true=0, false=0
i
f (atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(str : modules/filters/mod_filter.c line=169 column=17
s
tr) != : true=0, false=0
!
provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber) {
236                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
237                }
238                break : pass=0
b
reak;
239            /* Integer comparisons should be [var] OP [match]
240             * We need to set match = 0 if the condition fails
241             */
242            case : true=0, false=0
c
ase INT_LT:
243                if : true=0, false=0
i
f (atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(str : modules/filters/mod_filter.c line=169 column=17
s
tr) >= : true=0, false=0
>
provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber) {
244                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
245                }
246                break : pass=0
b
reak;
247            case : true=0, false=0
c
ase INT_LE:
248                if : true=0, false=0
i
f (atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(str : modules/filters/mod_filter.c line=169 column=17
s
tr) > : true=0, false=0
>
 provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber) {
249                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
250                }
251                break : pass=0
b
reak;
252            case : true=0, false=0
c
ase INT_GT:
253                if : true=0, false=0
i
f (atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(str : modules/filters/mod_filter.c line=169 column=17
s
tr) <= : true=0, false=0
<
provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber) {
254                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
255                }
256                break : pass=0
b
reak;
257            case : true=0, false=0
c
ase INT_GE:
258                if : true=0, false=0
i
f (atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(str : modules/filters/mod_filter.c line=169 column=17
s
tr) < : true=0, false=0
<
 provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber) {
259                    match : modules/filters/mod_filter.c line=171 column=9
m
atch = : pass=0
=
 0;
260                }
261                break : pass=0
b
reak;
262            case : true=0, false=0
c
ase DEFINED:        /* we already handled this:-) */
263                break : pass=0
b
reak;
264            }
265        }
266
267        if : true=0, false=0
i
f (match : modules/filters/mod_filter.c line=171 column=9
m
atch != : true=0, false=0
!
provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>not : modules/filters/mod_filter.c line=52 column=9
n
ot) {
268            /* condition matches this provider */
269#ifndef NO_PROTOCOL
270            /* check protocol
271             *
272             * FIXME:
273             * This is a quick hack and almost certainly buggy.
274             * The idea is that by putting this in mod_filter, we relieve
275             * filter implementations of the burden of fixing up HTTP headers
276             * for cases that are routinely affected by filters.
277             *
278             * Default is ALWAYS to do nothing, so as not to tread on the
279             * toes of filters which want to do it themselves.
280             *
281             */
282            proto_flags : modules/filters/mod_filter.c line=172 column=18
p
roto_flags = : pass=0
=
 provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>proto_flags : include/util_filter.h line=251 column=18
p
roto_flags;
283
284            /* some specific things can't happen in a proxy */
285            if : true=0, false=0
i
f (r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>proxyreq : include/httpd.h line=806 column=9
p
roxyreq) {
286                if : true=0, false=0
i
f (proto_flags : modules/filters/mod_filter.c line=172 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_NO_PROXY) {
287                    /* can't use this provider; try next */
288                    continue : pass=0
c
ontinue;
289                }
290
291                if : true=0, false=0
i
f (proto_flags : modules/filters/mod_filter.c line=172 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_TRANSFORM) {
292                    str : modules/filters/mod_filter.c line=169 column=17
s
tr = : pass=0
=
 apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Cache-Control");
293                    if : true=0, false=0
i
f (str : modules/filters/mod_filter.c line=169 column=17
s
tr) {
294                        str1 : modules/filters/mod_filter.c line=170 column=11
s
tr1 = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, str : modules/filters/mod_filter.c line=169 column=17
s
tr);
295                        ap_str_tolower : enter=0, leave=0

ap_str_tolower : include/httpd.h line=1739 column=18
a
p_str_tolower(str1 : modules/filters/mod_filter.c line=170 column=11
s
tr1);
296                        if : true=0, false=0
i
f (strstr : enter=0, leave=0

strstr : /usr/include/string.h line=342 column=14
s
trstr(str1 : modules/filters/mod_filter.c line=170 column=11
s
tr1, "no-transform")) {
297                            /* can't use this provider; try next */
298                            continue : pass=0
c
ontinue;
299                        }
300                    }
301                    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Warning",
302                                   apr_psprintf : enter=0, leave=0

apr_psprintf : /usr/include/apr-1/apr_strings.h line=170 column=28
a
pr_psprintf(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
303                                                "214 %s Transformation applied",
304                                                r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>hostname : include/httpd.h line=814 column=17
h
ostname));
305                }
306            }
307
308            /* things that are invalidated if the filter transforms content */
309            if : true=0, false=0
i
f (proto_flags : modules/filters/mod_filter.c line=172 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_CHANGE) {
310                apr_table_unset : enter=0, leave=0

apr_table_unset : /usr/include/apr-1/apr_tables.h line=290 column=19
a
pr_table_unset(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Content-MD5");
311                apr_table_unset : enter=0, leave=0

apr_table_unset : /usr/include/apr-1/apr_tables.h line=290 column=19
a
pr_table_unset(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "ETag");
312                if : true=0, false=0
i
f (proto_flags : modules/filters/mod_filter.c line=172 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_CHANGE_LENGTH) {
313                    apr_table_unset : enter=0, leave=0

apr_table_unset : /usr/include/apr-1/apr_tables.h line=290 column=19
a
pr_table_unset(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Content-Length");
314                }
315            }
316
317            /* no-cache is for a filter that has different effect per-hit */
318            if : true=0, false=0
i
f (proto_flags : modules/filters/mod_filter.c line=172 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_NO_CACHE) {
319                apr_table_unset : enter=0, leave=0

apr_table_unset : /usr/include/apr-1/apr_tables.h line=290 column=19
a
pr_table_unset(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Last-Modified");
320                apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Cache-Control", "no-cache");
321            }
322
323            if : true=0, false=0
i
f (proto_flags : modules/filters/mod_filter.c line=172 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_NO_BYTERANGE) {
324                apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Accept-Ranges", "none");
325            }
326            else if : true=0, false=0
i
f (MC/DC independently affect : true=0, false=0

rctx : modules/filters/mod_filter.c line=176 column=21
rTF
ctx && : true=0, false=0
&
rctx : modules/filters/mod_filter.c line=176 column=21
r
ctxMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>range : modules/filters/mod_filter.c line=104 column=17
r
ange) {
327                /* restore range header we saved earlier */
328                apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(r : modules/filters/mod_filter.c line=173 column=18
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "Range", rctx : modules/filters/mod_filter.c line=176 column=21
r
ctx-> : enter=0, leave=0
-
>range : modules/filters/mod_filter.c line=104 column=17
r
ange);
329                rctx : modules/filters/mod_filter.c line=176 column=21
r
ctx-> : enter=0, leave=0
-
>range : modules/filters/mod_filter.c line=104 column=17
r
ange = : enter=0, leave=0
=
 NULL;
330            }
331#endif
332            for : true=0, false=0
f
or (pctx : modules/filters/mod_filter.c line=175 column=19
p
ctx = : pass=0
=
 ctx : modules/filters/mod_filter.c line=174 column=18
c
tx-> : enter=0, leave=0
-
>init_ctx : modules/filters/mod_filter.c line=90 column=19
i
nit_ctx; pctx : modules/filters/mod_filter.c line=175 column=19
p
ctx; pctx : modules/filters/mod_filter.c line=175 column=19
p
ctx = : pass=0
=
 pctx : modules/filters/mod_filter.c line=175 column=19
p
ctx-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=85 column=19
n
ext) {
333                if : true=0, false=0
i
f (pctx : modules/filters/mod_filter.c line=175 column=19
p
ctx-> : enter=0, leave=0
-
>provider : modules/filters/mod_filter.c line=83 column=27
p
rovider == : true=0, false=0
=
provider : modules/filters/mod_filter.c line=168 column=27
p
rovider) {
334                    ctx : modules/filters/mod_filter.c line=174 column=18
c
tx-> : enter=0, leave=0
-
>fctx : modules/filters/mod_filter.c line=89 column=11
f
ctx = : enter=0, leave=0
=
 pctx : modules/filters/mod_filter.c line=175 column=19
p
ctx-> : enter=0, leave=0
-
>ctx : modules/filters/mod_filter.c line=84 column=11
c
tx ;
335                }
336            }
337            ctx : modules/filters/mod_filter.c line=174 column=18
c
tx-> : enter=0, leave=0
-
>func : modules/filters/mod_filter.c line=88 column=24
f
unc = : enter=0, leave=0
=
 provider : modules/filters/mod_filter.c line=168 column=27
p
rovider-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>filter_func : include/util_filter.h line=222 column=20
f
ilter_func.out_func : include/util_filter.h line=146 column=24
o
ut_func;
338            return : pass=0
r
eturn 1;
339        }
340    }
341
342    /* No provider matched */
343    return : pass=0
r
eturn 0;
344}
345
346static apr_status_t filter_harness : call=0
f
ilter_harness(ap_filter_t *f, apr_bucket_brigade *bb)
347{
348    apr_status_t ret;
349    const char *cachecontrol;
350    char *str;
351    harness_ctx *ctx = f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx;
352    ap_filter_rec_t *filter = f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>frec : include/util_filter.h line=265 column=22
f
rec;
353
354    if : true=0, false=0
i
f (f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= 200
355        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env, "filter-errordocs")) {
356        ap_remove_output_filter : enter=0, leave=0

ap_remove_output_filter : include/util_filter.h line=469 column=18
a
p_remove_output_filter(f : modules/filters/mod_filter.c line=346 column=49
f
);
357        return : pass=0
r
eturn ap_pass_brigade : enter=0, leave=0

ap_pass_brigade : include/util_filter.h line=312 column=26
a
p_pass_brigade(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>next : include/util_filter.h line=271 column=18
n
ext, bb : modules/filters/mod_filter.c line=346 column=72
b
b);
358    }
359
360    filter_trace : enter=0, leave=0

filter_trace : modules/filters/mod_filter.c line=108 column=13
f
ilter_trace(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>c : include/util_filter.h line=282 column=15
c
filter : modules/filters/mod_filter.c line=352 column=22
f
ilter-> : enter=0, leave=0
-
>debug : include/util_filter.h line=248 column=9
d
ebug, f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>frec : include/util_filter.h line=265 column=22
f
rec-> : enter=0, leave=0
-
>name : include/util_filter.h line=219 column=17
n
ame, bb : modules/filters/mod_filter.c line=346 column=72
b
b);
361
362    /* look up a handler function if we haven't already set it */
363    if : true=0, false=0
i
f (! : true=0, false=0
!
ctx : modules/filters/mod_filter.c line=351 column=18
c
tx-> : enter=0, leave=0
-
>func : modules/filters/mod_filter.c line=88 column=24
f
unc) {
364#ifndef NO_PROTOCOL
365        if : true=0, false=0
i
f (f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
-> : enter=0, leave=0
-
>proxyreq : include/httpd.h line=806 column=9
p
roxyreq) {
366            if : true=0, false=0
i
f (filter : modules/filters/mod_filter.c line=352 column=22
f
ilter-> : enter=0, leave=0
-
>proto_flags : include/util_filter.h line=251 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_NO_PROXY) {
367                ap_remove_output_filter : enter=0, leave=0

ap_remove_output_filter : include/util_filter.h line=469 column=18
a
p_remove_output_filter(f : modules/filters/mod_filter.c line=346 column=49
f
);
368                return : pass=0
r
eturn ap_pass_brigade : enter=0, leave=0

ap_pass_brigade : include/util_filter.h line=312 column=26
a
p_pass_brigade(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>next : include/util_filter.h line=271 column=18
n
ext, bb : modules/filters/mod_filter.c line=346 column=72
b
b);
369            }
370
371            if : true=0, false=0
i
f (filter : modules/filters/mod_filter.c line=352 column=22
f
ilter-> : enter=0, leave=0
-
>proto_flags : include/util_filter.h line=251 column=18
p
roto_flags & : pass=0
&
 AP_FILTER_PROTO_TRANSFORM) {
372                cachecontrol : modules/filters/mod_filter.c line=349 column=17
c
achecontrol = : pass=0
=
 apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out,
373                                             "Cache-Control");
374                if : true=0, false=0
i
f (cachecontrol : modules/filters/mod_filter.c line=349 column=17
c
achecontrol) {
375                    str : modules/filters/mod_filter.c line=350 column=11
s
tr = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>r : include/util_filter.h line=277 column=18
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,  cachecontrol : modules/filters/mod_filter.c line=349 column=17
c
achecontrol);
376                    ap_str_tolower : enter=0, leave=0

ap_str_tolower : include/httpd.h line=1739 column=18
a
p_str_tolower(str : modules/filters/mod_filter.c line=350 column=11
s
tr);
377                    if : true=0, false=0
i
f (strstr : enter=0, leave=0

strstr : /usr/include/string.h line=342 column=14
s
trstr(str : modules/filters/mod_filter.c line=350 column=11
s
tr, "no-transform")) {
378                        ap_remove_output_filter : enter=0, leave=0

ap_remove_output_filter : include/util_filter.h line=469 column=18
a
p_remove_output_filter(f : modules/filters/mod_filter.c line=346 column=49
f
);
379                        return : pass=0
r
eturn ap_pass_brigade : enter=0, leave=0

ap_pass_brigade : include/util_filter.h line=312 column=26
a
p_pass_brigade(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>next : include/util_filter.h line=271 column=18
n
ext, bb : modules/filters/mod_filter.c line=346 column=72
b
b);
380                    }
381                }
382            }
383        }
384#endif
385        if : true=0, false=0
i
f (! : true=0, false=0
!
filter_lookup : enter=0, leave=0

filter_lookup : modules/filters/mod_filter.c line=166 column=12
f
ilter_lookup(f : modules/filters/mod_filter.c line=346 column=49
f
filter : modules/filters/mod_filter.c line=352 column=22
f
ilter)) {
386            ap_remove_output_filter : enter=0, leave=0

ap_remove_output_filter : include/util_filter.h line=469 column=18
a
p_remove_output_filter(f : modules/filters/mod_filter.c line=346 column=49
f
);
387            return : pass=0
r
eturn ap_pass_brigade : enter=0, leave=0

ap_pass_brigade : include/util_filter.h line=312 column=26
a
p_pass_brigade(f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>next : include/util_filter.h line=271 column=18
n
ext, bb : modules/filters/mod_filter.c line=346 column=72
b
b);
388        }
389    }
390
391    /* call the content filter with its own context, then restore our
392     * context
393     */
394    f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx = : enter=0, leave=0
=
 ctx : modules/filters/mod_filter.c line=351 column=18
c
tx-> : enter=0, leave=0
-
>fctx : modules/filters/mod_filter.c line=89 column=11
f
ctx;
395    ret : modules/filters/mod_filter.c line=348 column=18
r
et = : pass=0
=
 func : enter=0, leave=0

ctx : modules/filters/mod_filter.c line=351 column=18
func : modules/filters/mod_filter.c line=88 column=24
c
tx-> : enter=0, leave=0
-
>func : modules/filters/mod_filter.c line=88 column=24
f
unc(f : modules/filters/mod_filter.c line=346 column=49
f
bb : modules/filters/mod_filter.c line=346 column=72
b
b);
396    ctx : modules/filters/mod_filter.c line=351 column=18
c
tx-> : enter=0, leave=0
-
>fctx : modules/filters/mod_filter.c line=89 column=11
f
ctx = : enter=0, leave=0
=
 f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx;
397    f : modules/filters/mod_filter.c line=346 column=49
f
-> : enter=0, leave=0
-
>ctx : include/util_filter.h line=268 column=11
c
tx = : enter=0, leave=0
=
 ctx : modules/filters/mod_filter.c line=351 column=18
c
tx;
398
399    return : pass=0
r
eturn ret : modules/filters/mod_filter.c line=348 column=18
r
et;
400}
401
402#ifndef NO_PROTOCOL
403static const char *filter_protocol : call=0
f
ilter_protocol(cmd_parms *cmd, void *CFG, const char *fname,
404                                   const char *pname, const char *proto)
405{
406    static const char *sep = ";, \t";
407    char *arg;
408    char *tok = 0;
409    unsigned int flags = 0;
410    mod_filter_cfg *cfg = CFG : modules/filters/mod_filter.c line=403 column=58
C
FG;
411    ap_filter_provider_t *provider = NULL;
412    ap_filter_rec_t *filter = apr_hash_get : enter=0, leave=0

apr_hash_get : /usr/include/apr-1/apr_hash.h line=117 column=21
a
pr_hash_get(cfg : modules/filters/mod_filter.c line=410 column=21
c
fg-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters, fname : modules/filters/mod_filter.c line=403 column=75
f
name,
413                                           APR_HASH_KEY_STRING);
414
415    if : true=0, false=0
i
f (! : true=0, false=0
!
filter : modules/filters/mod_filter.c line=412 column=22
f
ilter) {
416        return : pass=0
r
eturn "FilterProtocol: No such filter";
417    }
418
419    /* Fixup the args: it's really pname that's optional */
420    if : true=0, false=0
i
f (proto : modules/filters/mod_filter.c line=404 column=67
p
roto == : true=0, false=0
=
= NULL) {
421        proto : modules/filters/mod_filter.c line=404 column=67
p
roto = : pass=0
=
 pname : modules/filters/mod_filter.c line=404 column=48
p
name;
422        pname : modules/filters/mod_filter.c line=404 column=48
p
name = : pass=0
=
 NULL;
423    }
424    else {
425        /* Find provider */
426        for : true=0, false=0
f
or (provider : modules/filters/mod_filter.c line=411 column=27
p
rovider = : pass=0
=
 filter : modules/filters/mod_filter.c line=412 column=22
f
ilter-> : enter=0, leave=0
-
>providers : include/util_filter.h line=245 column=27
p
roviders; provider : modules/filters/mod_filter.c line=411 column=27
p
rovider; provider : modules/filters/mod_filter.c line=411 column=27
p
rovider = : pass=0
=
 provider : modules/filters/mod_filter.c line=411 column=27
p
rovider-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=65 column=27
n
ext){
427            if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(provider : modules/filters/mod_filter.c line=411 column=27
p
rovider-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>name : include/util_filter.h line=219 column=17
n
ame, pname : modules/filters/mod_filter.c line=404 column=48
p
name)) {
428                break : pass=0
b
reak;
429            }
430        }
431        if : true=0, false=0
i
f (! : true=0, false=0
!
provider : modules/filters/mod_filter.c line=411 column=27
p
rovider) {
432            return : pass=0
r
eturn "FilterProtocol: No such provider for this filter";
433        }
434    }
435
436    /* Now set flags from our args */
437    for : true=0, false=0
f
or (arg : modules/filters/mod_filter.c line=407 column=11
a
rg = : pass=0
=
 apr_strtok : enter=0, leave=0

apr_strtok : /usr/include/apr-1/apr_strings.h line=229 column=21
a
pr_strtok(apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(cmd : modules/filters/mod_filter.c line=403 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, proto : modules/filters/mod_filter.c line=404 column=67
p
roto), sep : modules/filters/mod_filter.c line=406 column=24
s
ep, &tok : modules/filters/mod_filter.c line=408 column=11
t
ok);
438         arg : modules/filters/mod_filter.c line=407 column=11
a
rg; arg : modules/filters/mod_filter.c line=407 column=11
a
rg = : pass=0
=
 apr_strtok : enter=0, leave=0

apr_strtok : /usr/include/apr-1/apr_strings.h line=229 column=21
a
pr_strtok(NULL, sep : modules/filters/mod_filter.c line=406 column=24
s
ep, &tok : modules/filters/mod_filter.c line=408 column=11
t
ok)) {
439
440        if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(arg : modules/filters/mod_filter.c line=407 column=11
a
rg, "change=yes")) {
441            flags : modules/filters/mod_filter.c line=409 column=18
f
lags |= : pass=0
|
= AP_FILTER_PROTO_CHANGE | : pass=0
|
 AP_FILTER_PROTO_CHANGE_LENGTH;
442        }
443        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(arg : modules/filters/mod_filter.c line=407 column=11
a
rg, "change=1:1")) {
444            flags : modules/filters/mod_filter.c line=409 column=18
f
lags |= : pass=0
|
= AP_FILTER_PROTO_CHANGE;
445        }
446        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(arg : modules/filters/mod_filter.c line=407 column=11
a
rg, "byteranges=no")) {
447            flags : modules/filters/mod_filter.c line=409 column=18
f
lags |= : pass=0
|
= AP_FILTER_PROTO_NO_BYTERANGE;
448        }
449        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(arg : modules/filters/mod_filter.c line=407 column=11
a
rg, "proxy=no")) {
450            flags : modules/filters/mod_filter.c line=409 column=18
f
lags |= : pass=0
|
= AP_FILTER_PROTO_NO_PROXY;
451        }
452        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(arg : modules/filters/mod_filter.c line=407 column=11
a
rg, "proxy=transform")) {
453            flags : modules/filters/mod_filter.c line=409 column=18
f
lags |= : pass=0
|
= AP_FILTER_PROTO_TRANSFORM;
454        }
455        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(arg : modules/filters/mod_filter.c line=407 column=11
a
rg, "cache=no")) {
456            flags : modules/filters/mod_filter.c line=409 column=18
f
lags |= : pass=0
|
= AP_FILTER_PROTO_NO_CACHE;
457        }
458    }
459
460    if : true=0, false=0
i
f (pname : modules/filters/mod_filter.c line=404 column=48
p
name) {
461        provider : modules/filters/mod_filter.c line=411 column=27
p
rovider-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec-> : enter=0, leave=0
-
>proto_flags : include/util_filter.h line=251 column=18
p
roto_flags = : enter=0, leave=0
=
 flags : modules/filters/mod_filter.c line=409 column=18
f
lags;
462    }
463    else {
464        filter : modules/filters/mod_filter.c line=412 column=22
f
ilter-> : enter=0, leave=0
-
>proto_flags : include/util_filter.h line=251 column=18
p
roto_flags = : enter=0, leave=0
=
 flags : modules/filters/mod_filter.c line=409 column=18
f
lags;
465    }
466
467    return : pass=0
r
eturn NULL;
468}
469#endif
470
471static const char *filter_declare : call=0
f
ilter_declare(cmd_parms *cmd, void *CFG, const char *fname,
472                                  const char *place)
473{
474    mod_filter_cfg *cfg = (mod_filter_cfg *)CFG : modules/filters/mod_filter.c line=471 column=57
C
FG;
475    ap_filter_rec_t *filter;
476
477    filter : modules/filters/mod_filter.c line=475 column=22
f
ilter = : pass=0
=
 apr_pcalloc(cmd : modules/filters/mod_filter.c line=471 column=46
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(ap_filter_rec_t));
478    apr_hash_set : enter=0, leave=0

apr_hash_set : /usr/include/apr-1/apr_hash.h line=107 column=19
a
pr_hash_set(cfg : modules/filters/mod_filter.c line=474 column=21
c
fg-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters, fname : modules/filters/mod_filter.c line=471 column=74
f
name, APR_HASH_KEY_STRING, filter : modules/filters/mod_filter.c line=475 column=22
f
ilter);
479
480    filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>name : include/util_filter.h line=219 column=17
n
ame = : enter=0, leave=0
=
 fname : modules/filters/mod_filter.c line=471 column=74
f
name;
481    filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>filter_init_func : include/util_filter.h line=232 column=25
f
ilter_init_func = : enter=0, leave=0
=
 filter_init : modules/filters/mod_filter.c line=131 column=12
f
ilter_init;
482    filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>filter_func : include/util_filter.h line=222 column=20
f
ilter_func.out_func : include/util_filter.h line=146 column=24
o
ut_func = : pass=0
=
 filter_harness : modules/filters/mod_filter.c line=346 column=21
f
ilter_harness;
483    filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>ftype : include/util_filter.h line=239 column=20
f
type = : enter=0, leave=0
=
 AP_FTYPE_RESOURCE : include/util_filter.h line=163 column=5
A
P_FTYPE_RESOURCE;
484    filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>next : include/util_filter.h line=242 column=29
n
ext = : enter=0, leave=0
=
 NULL;
485
486    if : true=0, false=0
i
f (place : modules/filters/mod_filter.c line=472 column=47
p
lace) {
487        if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(place : modules/filters/mod_filter.c line=472 column=47
p
lace, "CONTENT_SET")) {
488            filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>ftype : include/util_filter.h line=239 column=20
f
type = : enter=0, leave=0
=
 AP_FTYPE_CONTENT_SET : include/util_filter.h line=167 column=5
A
P_FTYPE_CONTENT_SET;
489        }
490        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(place : modules/filters/mod_filter.c line=472 column=47
p
lace, "PROTOCOL")) {
491            filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>ftype : include/util_filter.h line=239 column=20
f
type = : enter=0, leave=0
=
 AP_FTYPE_PROTOCOL : include/util_filter.h line=170 column=5
A
P_FTYPE_PROTOCOL;
492        }
493        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(place : modules/filters/mod_filter.c line=472 column=47
p
lace, "CONNECTION")) {
494            filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>ftype : include/util_filter.h line=239 column=20
f
type = : enter=0, leave=0
=
 AP_FTYPE_CONNECTION : include/util_filter.h line=182 column=5
A
P_FTYPE_CONNECTION;
495        }
496        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(place : modules/filters/mod_filter.c line=472 column=47
p
lace, "NETWORK")) {
497            filter : modules/filters/mod_filter.c line=475 column=22
f
ilter-> : enter=0, leave=0
-
>ftype : include/util_filter.h line=239 column=20
f
type = : enter=0, leave=0
=
 AP_FTYPE_NETWORK : include/util_filter.h line=185 column=5
A
P_FTYPE_NETWORK;
498        }
499    }
500
501    return : pass=0
r
eturn NULL;
502}
503
504static const char *filter_provider : call=0
f
ilter_provider(cmd_parms *cmd, void *CFG, const char *args)
505{
506    mod_filter_cfg *cfg = CFG : modules/filters/mod_filter.c line=504 column=58
C
FG;
507    int flags;
508    ap_filter_provider_t *provider;
509    const char *rxend;
510    const char *c;
511    char *str;
512    const char *eq;
513    ap_filter_rec_t* frec;
514    ap_filter_rec_t* provider_frec;
515
516    /* insist on exactly four arguments */
517    const char *fname = ap_getword_conf : enter=0, leave=0

ap_getword_conf : include/httpd.h line=1358 column=20
a
p_getword_conf(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, &args : modules/filters/mod_filter.c line=504 column=75
a
rgs) ;
518    const char *pname = ap_getword_conf : enter=0, leave=0

ap_getword_conf : include/httpd.h line=1358 column=20
a
p_getword_conf(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, &args : modules/filters/mod_filter.c line=504 column=75
a
rgs) ;
519    const char *condition = ap_getword_conf : enter=0, leave=0

ap_getword_conf : include/httpd.h line=1358 column=20
a
p_getword_conf(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, &args : modules/filters/mod_filter.c line=504 column=75
a
rgs) ;
520    const char *match = ap_getword_conf : enter=0, leave=0

ap_getword_conf : include/httpd.h line=1358 column=20
a
p_getword_conf(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, &args : modules/filters/mod_filter.c line=504 column=75
a
rgs) ;
521    eq : modules/filters/mod_filter.c line=512 column=17
e
= : pass=0
=
 ap_getword_conf : enter=0, leave=0

ap_getword_conf : include/httpd.h line=1358 column=20
a
p_getword_conf(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, &args : modules/filters/mod_filter.c line=504 column=75
a
rgs) ;
522    if : true=0, false=0
i
f ( ! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
fname : modules/filters/mod_filter.c line=517 column=17
f
name || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
pname : modules/filters/mod_filter.c line=518 column=17
p
name || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
match : modules/filters/mod_filter.c line=520 column=17
m
atch || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
condition : modules/filters/mod_filter.c line=519 column=17
c
ondition || : true=0, false=0
|
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
eq : modules/filters/mod_filter.c line=512 column=17
e
q ) {
523        return : pass=0
r
eturn "usage: FilterProvider filter provider condition match" ;
524    }
525
526    /* fname has been declared with DeclareFilter, so we can look it up */
527    frec : modules/filters/mod_filter.c line=513 column=22
f
rec = : pass=0
=
 apr_hash_get : enter=0, leave=0

apr_hash_get : /usr/include/apr-1/apr_hash.h line=117 column=21
a
pr_hash_get(cfg : modules/filters/mod_filter.c line=506 column=21
c
fg-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters, fname : modules/filters/mod_filter.c line=517 column=17
f
name, APR_HASH_KEY_STRING);
528
529    /* or if provider is mod_filter itself, we can also look it up */
530    if : true=0, false=0
i
f (! : true=0, false=0
!
frec : modules/filters/mod_filter.c line=513 column=22
f
rec) {
531        c : modules/filters/mod_filter.c line=510 column=17
c
 = : pass=0
=
 filter_declare : enter=0, leave=0

filter_declare : modules/filters/mod_filter.c line=471 column=20
f
ilter_declare(cmd : modules/filters/mod_filter.c line=504 column=47
c
md, CFG : modules/filters/mod_filter.c line=504 column=58
C
FG, fname : modules/filters/mod_filter.c line=517 column=17
f
name, NULL);
532        if : true=0, false=0
i
f ( c : modules/filters/mod_filter.c line=510 column=17
c
 ) {
533            return : pass=0
r
eturn c : modules/filters/mod_filter.c line=510 column=17
c
;
534        }
535        frec : modules/filters/mod_filter.c line=513 column=22
f
rec = : pass=0
=
 apr_hash_get : enter=0, leave=0

apr_hash_get : /usr/include/apr-1/apr_hash.h line=117 column=21
a
pr_hash_get(cfg : modules/filters/mod_filter.c line=506 column=21
c
fg-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters, fname : modules/filters/mod_filter.c line=517 column=17
f
name, APR_HASH_KEY_STRING);
536    }
537
538    if : true=0, false=0
i
f (! : true=0, false=0
!
frec : modules/filters/mod_filter.c line=513 column=22
f
rec) {
539        return : pass=0
r
eturn apr_psprintf : enter=0, leave=0

apr_psprintf : /usr/include/apr-1/apr_strings.h line=170 column=28
a
pr_psprintf(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, "Undeclared smart filter %s", fname : modules/filters/mod_filter.c line=517 column=17
f
name);
540    }
541
542    /* if provider has been registered, we can look it up */
543    provider_frec : modules/filters/mod_filter.c line=514 column=22
p
rovider_frec = : pass=0
=
 ap_get_output_filter_handle : enter=0, leave=0

ap_get_output_filter_handle : include/util_filter.h line=453 column=31
a
p_get_output_filter_handle(pname : modules/filters/mod_filter.c line=518 column=17
p
name);
544    if : true=0, false=0
i
f (! : true=0, false=0
!
provider_frec : modules/filters/mod_filter.c line=514 column=22
p
rovider_frec) {
545        return : pass=0
r
eturn apr_psprintf : enter=0, leave=0

apr_psprintf : /usr/include/apr-1/apr_strings.h line=170 column=28
a
pr_psprintf(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, "Unknown filter provider %s", pname : modules/filters/mod_filter.c line=518 column=17
p
name);
546    }
547
548    provider : modules/filters/mod_filter.c line=508 column=27
p
rovider = : pass=0
=
 apr_palloc : enter=0, leave=0

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(ap_filter_provider_t));
549    if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
match : modules/filters/mod_filter.c line=520 column=17
m
atch == : true=0, false=0
=
= '!') {
550        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>not : modules/filters/mod_filter.c line=52 column=9
n
ot = : enter=0, leave=0
=
 1;
551        ++ : pass=0
+
+match : modules/filters/mod_filter.c line=520 column=17
m
atch;
552    }
553    else {
554        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>not : modules/filters/mod_filter.c line=52 column=9
n
ot = : enter=0, leave=0
=
 0;
555    }
556
557    switch : pass=0
s
witch (* dereference : enter=0, leave=0
*
match : modules/filters/mod_filter.c line=520 column=17
m
atch++ : pass=0
+
+) {
558    case : true=0, false=0
c
ase '<':
559        if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
match : modules/filters/mod_filter.c line=520 column=17
m
atch == : true=0, false=0
=
= '=') {
560            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 INT_LE : modules/filters/mod_filter.c line=45 column=9
I
NT_LE;
561            ++ : pass=0
+
+match : modules/filters/mod_filter.c line=520 column=17
m
atch;
562        }
563        else {
564            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 INT_LT : modules/filters/mod_filter.c line=44 column=9
I
NT_LT;
565        }
566        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber = : pass=0
=
 atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(match : modules/filters/mod_filter.c line=520 column=17
m
atch);
567        break : pass=0
b
reak;
568    case : true=0, false=0
c
ase '>':
569        if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
match : modules/filters/mod_filter.c line=520 column=17
m
atch == : true=0, false=0
=
= '=') {
570            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 INT_GE : modules/filters/mod_filter.c line=47 column=9
I
NT_GE;
571            ++ : pass=0
+
+match : modules/filters/mod_filter.c line=520 column=17
m
atch;
572        }
573        else {
574            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 INT_GT : modules/filters/mod_filter.c line=46 column=9
I
NT_GT;
575        }
576        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber = : pass=0
=
 atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(match : modules/filters/mod_filter.c line=520 column=17
m
atch);
577        break : pass=0
b
reak;
578    case : true=0, false=0
c
ase '=':
579        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 INT_EQ : modules/filters/mod_filter.c line=43 column=9
I
NT_EQ;
580        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber = : pass=0
=
 atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(match : modules/filters/mod_filter.c line=520 column=17
m
atch);
581        break : pass=0
b
reak;
582    case : true=0, false=0
c
ase '/':
583        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 REGEX_MATCH : modules/filters/mod_filter.c line=42 column=9
R
EGEX_MATCH;
584        rxend : modules/filters/mod_filter.c line=509 column=17
r
xend = : pass=0
=
 ap_strrchr_c(match : modules/filters/mod_filter.c line=520 column=17
m
atch, '/');
585        if : true=0, false=0
i
f (! : true=0, false=0
!
rxend : modules/filters/mod_filter.c line=509 column=17
r
xend) {
586              return : pass=0
r
eturn "Bad regexp syntax";
587        }
588        flags : modules/filters/mod_filter.c line=507 column=9
f
lags = : pass=0
=
 AP_REG_NOSUB;        /* we're not mod_rewrite:-) */
589        for : true=0, false=0
f
or (c : modules/filters/mod_filter.c line=510 column=17
c
 = : pass=0
=
 rxend : modules/filters/mod_filter.c line=509 column=17
r
xend+ : pass=0
+
1; * dereference : enter=0, leave=0
*
c : modules/filters/mod_filter.c line=510 column=17
c
++ : pass=0
+
+c : modules/filters/mod_filter.c line=510 column=17
c
) {
590            switch : pass=0
s
witch (* dereference : enter=0, leave=0
*
c : modules/filters/mod_filter.c line=510 column=17
c
) {
591            case : true=0, false=0
c
ase 'i': flags : modules/filters/mod_filter.c line=507 column=9
f
lags |= : pass=0
|
= AP_REG_ICASE; break : pass=0
b
reak;
592            }
593        }
594        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.regex : modules/filters/mod_filter.c line=57 column=21
r
egex = : pass=0
=
 ap_pregcomp : enter=0, leave=0

ap_pregcomp : include/httpd.h line=1684 column=26
a
p_pregcomp(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool,
595                                            apr_pstrndup : enter=0, leave=0

apr_pstrndup : /usr/include/apr-1/apr_strings.h line=121 column=21
a
pr_pstrndup(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool,
596                                                         match : modules/filters/mod_filter.c line=520 column=17
m
atch,
597                                                         rxend : modules/filters/mod_filter.c line=509 column=17
r
xend- : pass=0
-
match : modules/filters/mod_filter.c line=520 column=17
m
atch),
598                                            flags : modules/filters/mod_filter.c line=507 column=9
f
lags);
599        if : true=0, false=0
i
f (provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.regex : modules/filters/mod_filter.c line=57 column=21
r
egex == : true=0, false=0
=
= NULL) {
600            return : pass=0
r
eturn "Bad regexp";
601        }
602        break : pass=0
b
reak;
603    case : true=0, false=0
c
ase '*':
604        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 DEFINED : modules/filters/mod_filter.c line=48 column=9
D
EFINED;
605        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.number : modules/filters/mod_filter.c line=58 column=21
n
umber = : pass=0
=
 -1;
606        break : pass=0
b
reak;
607    case : true=0, false=0
c
ase '$':
608        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 STRING_CONTAINS : modules/filters/mod_filter.c line=41 column=9
S
TRING_CONTAINS;
609        str : modules/filters/mod_filter.c line=511 column=11
s
tr = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, match : modules/filters/mod_filter.c line=520 column=17
m
atch);
610        ap_str_tolower : enter=0, leave=0

ap_str_tolower : include/httpd.h line=1739 column=18
a
p_str_tolower(str : modules/filters/mod_filter.c line=511 column=11
s
tr);
611        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.string : modules/filters/mod_filter.c line=56 column=21
s
tring = : pass=0
=
 str : modules/filters/mod_filter.c line=511 column=11
s
tr;
612        break : pass=0
b
reak;
613    default : true=0, false=0
d
efault:
614        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match_type : modules/filters/mod_filter.c line=49 column=7
m
atch_type = : enter=0, leave=0
=
 STRING_MATCH : modules/filters/mod_filter.c line=40 column=9
S
TRING_MATCH;
615        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>match : modules/filters/mod_filter.c line=59 column=7
m
atch.string : modules/filters/mod_filter.c line=56 column=21
s
tring = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, match : modules/filters/mod_filter.c line=520 column=17
m
atch- : pass=0
-
1);
616        break : pass=0
b
reak;
617    }
618    provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>frec : modules/filters/mod_filter.c line=62 column=22
f
rec = : enter=0, leave=0
=
 provider_frec : modules/filters/mod_filter.c line=514 column=22
p
rovider_frec;
619    provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=65 column=27
n
ext = : enter=0, leave=0
=
 frec : modules/filters/mod_filter.c line=513 column=22
f
rec-> : enter=0, leave=0
-
>providers : include/util_filter.h line=245 column=27
p
roviders;
620    frec : modules/filters/mod_filter.c line=513 column=22
f
rec-> : enter=0, leave=0
-
>providers : include/util_filter.h line=245 column=27
p
roviders = : enter=0, leave=0
=
 provider : modules/filters/mod_filter.c line=508 column=27
p
rovider;
621
622    /* determine what a filter will dispatch this provider on */
623    eq : modules/filters/mod_filter.c line=512 column=17
e
= : pass=0
=
 ap_strchr_c(condition : modules/filters/mod_filter.c line=519 column=17
c
ondition, '=');
624    if : true=0, false=0
i
f (eq : modules/filters/mod_filter.c line=512 column=17
e
q) {
625        str : modules/filters/mod_filter.c line=511 column=11
s
tr = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, eq : modules/filters/mod_filter.c line=512 column=17
e
q+ : pass=0
+
1);
626        if : true=0, false=0
i
f (! : true=0, false=0
!
strncasecmp : enter=0, leave=0

strncasecmp : /usr/include/string.h line=540 column=12
s
trncasecmp(condition : modules/filters/mod_filter.c line=519 column=17
c
ondition, "env=", 4)) {
627            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch = : enter=0, leave=0
=
 SUBPROCESS_ENV : modules/filters/mod_filter.c line=72 column=9
S
UBPROCESS_ENV;
628        }
629        else if : true=0, false=0
i
f (! : true=0, false=0
!
strncasecmp : enter=0, leave=0

strncasecmp : /usr/include/string.h line=540 column=12
s
trncasecmp(condition : modules/filters/mod_filter.c line=519 column=17
c
ondition, "req=", 4)) {
630            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch = : enter=0, leave=0
=
 REQUEST_HEADERS : modules/filters/mod_filter.c line=70 column=9
R
EQUEST_HEADERS;
631        }
632        else if : true=0, false=0
i
f (! : true=0, false=0
!
strncasecmp : enter=0, leave=0

strncasecmp : /usr/include/string.h line=540 column=12
s
trncasecmp(condition : modules/filters/mod_filter.c line=519 column=17
c
ondition, "resp=", 5)) {
633            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch = : enter=0, leave=0
=
 RESPONSE_HEADERS : modules/filters/mod_filter.c line=71 column=9
R
ESPONSE_HEADERS;
634        }
635        else {
636            return : pass=0
r
eturn "FilterProvider: unrecognized dispatch table";
637        }
638    }
639    else {
640        if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(condition : modules/filters/mod_filter.c line=519 column=17
c
ondition, "handler")) {
641            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch = : enter=0, leave=0
=
 HANDLER : modules/filters/mod_filter.c line=69 column=9
H
ANDLER;
642        }
643        else {
644            provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch = : enter=0, leave=0
=
 RESPONSE_HEADERS : modules/filters/mod_filter.c line=71 column=9
R
ESPONSE_HEADERS;
645        }
646        str : modules/filters/mod_filter.c line=511 column=11
s
tr = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(cmd : modules/filters/mod_filter.c line=504 column=47
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, condition : modules/filters/mod_filter.c line=519 column=17
c
ondition);
647        ap_str_tolower : enter=0, leave=0

ap_str_tolower : include/httpd.h line=1739 column=18
a
p_str_tolower(str : modules/filters/mod_filter.c line=511 column=11
s
tr);
648    }
649
650    if : true=0, false=0
i
f (   (provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
RESPONSE_HEADERS : modules/filters/mod_filter.c line=71 column=9
R
ESPONSE_HEADERS)
651        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(str : modules/filters/mod_filter.c line=511 column=11
s
tr, "content-type")) {
652        provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>dispatch : modules/filters/mod_filter.c line=74 column=7
d
ispatch = : enter=0, leave=0
=
 CONTENT_TYPE : modules/filters/mod_filter.c line=73 column=9
C
ONTENT_TYPE;
653    }
654    provider : modules/filters/mod_filter.c line=508 column=27
p
rovider-> : enter=0, leave=0
-
>value : modules/filters/mod_filter.c line=77 column=17
v
alue = : enter=0, leave=0
=
 str : modules/filters/mod_filter.c line=511 column=11
s
tr;
655
656    return : pass=0
r
eturn NULL;
657}
658
659static const char *filter_chain : call=0
f
ilter_chain(cmd_parms *cmd, void *CFG, const char *arg)
660{
661    mod_filter_chain *p;
662    mod_filter_chain *q;
663    mod_filter_cfg *cfg = CFG : modules/filters/mod_filter.c line=659 column=55
C
FG;
664
665    switch : pass=0
s
witch (arg : modules/filters/mod_filter.c line=659 column=72
a
rg[] : enter=0, leave=0
[
0]) {
666    case : true=0, false=0
c
ase '+':        /* add to end of chain */
667        p : modules/filters/mod_filter.c line=661 column=23
p
 = : pass=0
=
 apr_pcalloc(cmd : modules/filters/mod_filter.c line=659 column=44
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(mod_filter_chain));
668        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name = : enter=0, leave=0
=
 arg : modules/filters/mod_filter.c line=659 column=72
a
rg+ : pass=0
+
1;
669        if : true=0, false=0
i
f (cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain) {
670            for : true=0, false=0
f
or (q : modules/filters/mod_filter.c line=662 column=23
q
 = : pass=0
=
 cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain; q : modules/filters/mod_filter.c line=662 column=23
q
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext; q : modules/filters/mod_filter.c line=662 column=23
q
 = : pass=0
=
 q : modules/filters/mod_filter.c line=662 column=23
q
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext);
671            q : modules/filters/mod_filter.c line=662 column=23
q
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
;
672        }
673        else {
674            cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
;
675        }
676        break : pass=0
b
reak;
677
678    case : true=0, false=0
c
ase '@':        /* add to start of chain */
679        p : modules/filters/mod_filter.c line=661 column=23
p
 = : pass=0
=
 apr_palloc : enter=0, leave=0

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(cmd : modules/filters/mod_filter.c line=659 column=44
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(mod_filter_chain));
680        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name = : enter=0, leave=0
=
 arg : modules/filters/mod_filter.c line=659 column=72
a
rg+ : pass=0
+
1;
681        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext = : enter=0, leave=0
=
 cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain;
682        cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
;
683        break : pass=0
b
reak;
684
685    case : true=0, false=0
c
ase '-':        /* remove from chain */
686        if : true=0, false=0
i
f (cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain) {
687            if : true=0, false=0
i
f (strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name, arg : modules/filters/mod_filter.c line=659 column=72
a
rg+ : pass=0
+
1)) {
688                for : true=0, false=0
f
or (p : modules/filters/mod_filter.c line=661 column=23
p
 = : pass=0
=
 cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain; p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext; p : modules/filters/mod_filter.c line=661 column=23
p
 = : pass=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext) {
689                    if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name, arg : modules/filters/mod_filter.c line=659 column=72
a
rg+ : pass=0
+
1)) {
690                        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext;
691                    }
692                }
693            }
694            else {
695                cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext;
696            }
697        }
698        break : pass=0
b
reak;
699
700    case : true=0, false=0
c
ase '!':        /* Empty the chain */
701                     /** IG: Add a NULL provider to the beginning so that 
702                      *  we can ensure that we'll empty everything before 
703                      *  this when doing config merges later */
704        p : modules/filters/mod_filter.c line=661 column=23
p
 = : pass=0
=
 apr_pcalloc(cmd : modules/filters/mod_filter.c line=659 column=44
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(mod_filter_chain));
705        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name = : enter=0, leave=0
=
 NULL;
706        cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
;
707        break : pass=0
b
reak;
708
709    case : true=0, false=0
c
ase '=':        /* initialise chain with this arg */
710                     /** IG: Prepend a NULL provider to the beginning as above */
711        p : modules/filters/mod_filter.c line=661 column=23
p
 = : pass=0
=
 apr_pcalloc(cmd : modules/filters/mod_filter.c line=659 column=44
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(mod_filter_chain));
712        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name = : enter=0, leave=0
=
 NULL;
713        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext = : enter=0, leave=0
=
 apr_pcalloc(cmd : modules/filters/mod_filter.c line=659 column=44
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(mod_filter_chain));
714        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name = : enter=0, leave=0
=
 arg : modules/filters/mod_filter.c line=659 column=72
a
rg+ : pass=0
+
1;
715        cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
;
716        break : pass=0
b
reak;
717
718    default : true=0, false=0
d
efault:        /* add to end */
719        p : modules/filters/mod_filter.c line=661 column=23
p
 = : pass=0
=
 apr_pcalloc(cmd : modules/filters/mod_filter.c line=659 column=44
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, sizeof(mod_filter_chain));
720        p : modules/filters/mod_filter.c line=661 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name = : enter=0, leave=0
=
 arg : modules/filters/mod_filter.c line=659 column=72
a
rg;
721        if : true=0, false=0
i
f (cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain) {
722            for : true=0, false=0
f
or (q : modules/filters/mod_filter.c line=662 column=23
q
 = : pass=0
=
 cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain; q : modules/filters/mod_filter.c line=662 column=23
q
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext; q : modules/filters/mod_filter.c line=662 column=23
q
 = : pass=0
=
 q : modules/filters/mod_filter.c line=662 column=23
q
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext);
723            q : modules/filters/mod_filter.c line=662 column=23
q
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
;
724        }
725        else {
726            cfg : modules/filters/mod_filter.c line=663 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=661 column=23
p
;
727        }
728        break : pass=0
b
reak;
729    }
730
731    return : pass=0
r
eturn NULL;
732}
733
734static const char *filter_debug : call=0
f
ilter_debug(cmd_parms *cmd, void *CFG, const char *fname,
735                                const char *level)
736{
737    mod_filter_cfg *cfg = CFG : modules/filters/mod_filter.c line=734 column=55
C
FG;
738    ap_filter_rec_t *frec = apr_hash_get : enter=0, leave=0

apr_hash_get : /usr/include/apr-1/apr_hash.h line=117 column=21
a
pr_hash_get(cfg : modules/filters/mod_filter.c line=737 column=21
c
fg-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters, fname : modules/filters/mod_filter.c line=734 column=72
f
name,
739                                         APR_HASH_KEY_STRING);
740    if : true=0, false=0
i
f (! : true=0, false=0
!
frec : modules/filters/mod_filter.c line=738 column=22
f
rec) {
741        return : pass=0
r
eturn apr_psprintf : enter=0, leave=0

apr_psprintf : /usr/include/apr-1/apr_strings.h line=170 column=28
a
pr_psprintf(cmd : modules/filters/mod_filter.c line=734 column=44
c
md-> : enter=0, leave=0
-
>pool : include/http_config.h line=291 column=17
p
ool, "Undeclared smart filter %s", fname : modules/filters/mod_filter.c line=734 column=72
f
name);
742    }
743    frec : modules/filters/mod_filter.c line=738 column=22
f
rec-> : enter=0, leave=0
-
>debug : include/util_filter.h line=248 column=9
d
ebug = : enter=0, leave=0
=
 atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(level : modules/filters/mod_filter.c line=735 column=45
l
evel);
744
745    return : pass=0
r
eturn NULL;
746}
747
748static void filter_insert : call=0
f
ilter_insert(request_rec *r)
749{
750    mod_filter_chain *p;
751    ap_filter_rec_t *filter;
752    mod_filter_cfg *cfg = ap_get_module_config(r : modules/filters/mod_filter.c line=748 column=40
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config,
753                                               &filter_module : modules/filters/mod_filter.c line=28 column=31
f
ilter_module);
754#ifndef NO_PROTOCOL
755    int ranges = 1;
756    mod_filter_ctx *ctx = apr_pcalloc(r : modules/filters/mod_filter.c line=748 column=40
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, sizeof(mod_filter_ctx));
757    ap_set_module_config(r : modules/filters/mod_filter.c line=748 column=40
r
-> : enter=0, leave=0
-
>request_config : include/httpd.h line=979 column=30
r
equest_config, &filter_module : modules/filters/mod_filter.c line=28 column=31
f
ilter_module, ctx : modules/filters/mod_filter.c line=756 column=21
c
tx);
758#endif
759
760    /** IG: Now that we've merged to the final config, go one last time
761     *  through the chain, and prune out the NULL filters */
762
763    for : true=0, false=0
f
or (p : modules/filters/mod_filter.c line=750 column=23
p
 = : pass=0
=
 cfg : modules/filters/mod_filter.c line=752 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain; p : modules/filters/mod_filter.c line=750 column=23
p
p : modules/filters/mod_filter.c line=750 column=23
p
 = : pass=0
=
 p : modules/filters/mod_filter.c line=750 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext) {
764        if : true=0, false=0
i
f (p : modules/filters/mod_filter.c line=750 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name == : true=0, false=0
=
= NULL) 
765            cfg : modules/filters/mod_filter.c line=752 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 p : modules/filters/mod_filter.c line=750 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext;
766    }
767
768    for : true=0, false=0
f
or (p : modules/filters/mod_filter.c line=750 column=23
p
 = : pass=0
=
 cfg : modules/filters/mod_filter.c line=752 column=21
c
fg-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain; p : modules/filters/mod_filter.c line=750 column=23
p
p : modules/filters/mod_filter.c line=750 column=23
p
 = : pass=0
=
 p : modules/filters/mod_filter.c line=750 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext) {
769        filter : modules/filters/mod_filter.c line=751 column=22
f
ilter = : pass=0
=
 apr_hash_get : enter=0, leave=0

apr_hash_get : /usr/include/apr-1/apr_hash.h line=117 column=21
a
pr_hash_get(cfg : modules/filters/mod_filter.c line=752 column=21
c
fg-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters, p : modules/filters/mod_filter.c line=750 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name, APR_HASH_KEY_STRING);
770        if : true=0, false=0
i
f (filter : modules/filters/mod_filter.c line=751 column=22
f
ilter == : true=0, false=0
=
= NULL) {
771            ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r : modules/filters/mod_filter.c line=748 column=40
r
,
772                          "Unknown filter %s not added", p : modules/filters/mod_filter.c line=750 column=23
p
-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name);
773            continue : pass=0
c
ontinue;
774        }
775        ap_add_output_filter_handle : enter=0, leave=0

ap_add_output_filter_handle : include/util_filter.h line=443 column=27
a
p_add_output_filter_handle(filter : modules/filters/mod_filter.c line=751 column=22
f
ilter, NULL, r : modules/filters/mod_filter.c line=748 column=40
r
r : modules/filters/mod_filter.c line=748 column=40
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection);
776#ifndef NO_PROTOCOL
777        if : true=0, false=0
i
f (MC/DC independently affect : true=0, false=0

ranges : modules/filters/mod_filter.c line=755 column=9
rTF
anges && : true=0, false=0
&
& (filter : modules/filters/mod_filter.c line=751 column=22
f
ilter-> : enter=0, leave=0
-
>proto_flags : include/util_filter.h line=251 column=18
p
roto_flags
778                       & : pass=0
&
 (AP_FILTER_PROTO_NO_BYTERANGE
779                          | : pass=0
|
 AP_FILTER_PROTO_CHANGE_LENGTH))) {
780            ctx : modules/filters/mod_filter.c line=756 column=21
c
tx-> : enter=0, leave=0
-
>range : modules/filters/mod_filter.c line=104 column=17
r
ange = : enter=0, leave=0
=
 apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(r : modules/filters/mod_filter.c line=748 column=40
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "Range");
781            apr_table_unset : enter=0, leave=0

apr_table_unset : /usr/include/apr-1/apr_tables.h line=290 column=19
a
pr_table_unset(r : modules/filters/mod_filter.c line=748 column=40
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "Range");
782            ranges : modules/filters/mod_filter.c line=755 column=9
r
anges = : pass=0
=
 0;
783        }
784#endif
785    }
786
787    return : pass=0
r
eturn;
788}
789
790static void filter_hooks : call=1
f
ilter_hooks(apr_pool_t *pool)
791{
792    ap_hook_insert_filter : enter=1, leave=1

ap_hook_insert_filter : modules/filters/ line=42 column=1
a
p_hook_insert_filter(filter_insert : modules/filters/mod_filter.c line=748 column=13
f
ilter_insert, NULL, NULL, APR_HOOK_MIDDLE);
793}
794
795static void *filter_config : call=1
f
ilter_config(apr_pool_t *pool, char *x)
796{
797    mod_filter_cfg *cfg = apr_palloc : enter=1, leave=1

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(pool : modules/filters/mod_filter.c line=795 column=40
p
ool, sizeof(mod_filter_cfg));
798    cfg : modules/filters/mod_filter.c line=797 column=21
c
fg-> : enter=1, leave=1
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters = : enter=1, leave=1
=
 apr_hash_make : enter=1, leave=1

apr_hash_make : /usr/include/apr-1/apr_hash.h line=78 column=27
a
pr_hash_make(pool : modules/filters/mod_filter.c line=795 column=40
p
ool);
799    cfg : modules/filters/mod_filter.c line=797 column=21
c
fg-> : enter=1, leave=1
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=1, leave=1
=
 NULL;
800    return : pass=1
r
eturn cfg : modules/filters/mod_filter.c line=797 column=21
c
fg;
801}
802
803static void *filter_merge : call=0
f
ilter_merge(apr_pool_t *pool, void *BASE, void *ADD)
804{
805    mod_filter_cfg *base = BASE : modules/filters/mod_filter.c line=803 column=51
B
ASE;
806    mod_filter_cfg *add = ADD : modules/filters/mod_filter.c line=803 column=63
A
DD;
807    mod_filter_chain *savelink = 0;
808    mod_filter_chain *newlink;
809    mod_filter_chain *p;
810    mod_filter_cfg *conf = apr_palloc : enter=0, leave=0

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(pool : modules/filters/mod_filter.c line=803 column=39
p
ool, sizeof(mod_filter_cfg));
811
812    conf : modules/filters/mod_filter.c line=810 column=21
c
onf-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters = : enter=0, leave=0
=
 apr_hash_overlay : enter=0, leave=0

apr_hash_overlay : /usr/include/apr-1/apr_hash.h line=192 column=27
a
pr_hash_overlay(pool : modules/filters/mod_filter.c line=803 column=39
p
ool, add : modules/filters/mod_filter.c line=806 column=21
a
dd-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters,
813                                          base : modules/filters/mod_filter.c line=805 column=21
b
ase-> : enter=0, leave=0
-
>live_filters : modules/filters/mod_filter.c line=99 column=17
l
ive_filters);
814    if : true=0, false=0
i
f (base : modules/filters/mod_filter.c line=805 column=21
b
aseMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain && : true=0, false=0
&
add : modules/filters/mod_filter.c line=806 column=21
a
ddMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain) {
815        for : true=0, false=0
f
or (p : modules/filters/mod_filter.c line=809 column=23
p
 = : pass=0
=
 base : modules/filters/mod_filter.c line=805 column=21
b
ase-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain; p : modules/filters/mod_filter.c line=809 column=23
p
p : modules/filters/mod_filter.c line=809 column=23
p
 = : pass=0
=
 p : modules/filters/mod_filter.c line=809 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext) {
816            newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink = : pass=0
=
 apr_pmemdup : enter=0, leave=0

apr_pmemdup : /usr/include/apr-1/apr_strings.h line=131 column=21
a
pr_pmemdup(pool : modules/filters/mod_filter.c line=803 column=39
p
ool, p : modules/filters/mod_filter.c line=809 column=23
p
, sizeof(mod_filter_chain));
817            if : true=0, false=0
i
f (newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name == : true=0, false=0
=
= NULL) {
818                conf : modules/filters/mod_filter.c line=810 column=21
c
onf-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink = : pass=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
819            }
820            else if : true=0, false=0
i
f (savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink) {
821                savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext = : enter=0, leave=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
822                savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink = : pass=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
823            }
824            else {
825                conf : modules/filters/mod_filter.c line=810 column=21
c
onf-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink = : pass=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
826            }
827        }
828
829        for : true=0, false=0
f
or (p : modules/filters/mod_filter.c line=809 column=23
p
 = : pass=0
=
 add : modules/filters/mod_filter.c line=806 column=21
a
dd-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain; p : modules/filters/mod_filter.c line=809 column=23
p
p : modules/filters/mod_filter.c line=809 column=23
p
 = : pass=0
=
 p : modules/filters/mod_filter.c line=809 column=23
p
-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext) {
830            newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink = : pass=0
=
 apr_pmemdup : enter=0, leave=0

apr_pmemdup : /usr/include/apr-1/apr_strings.h line=131 column=21
a
pr_pmemdup(pool : modules/filters/mod_filter.c line=803 column=39
p
ool, p : modules/filters/mod_filter.c line=809 column=23
p
, sizeof(mod_filter_chain));
831            /** Filter out merged chain resets */
832            if : true=0, false=0
i
f (newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink-> : enter=0, leave=0
-
>fname : modules/filters/mod_filter.c line=94 column=17
f
name == : true=0, false=0
=
= NULL) {
833                conf : modules/filters/mod_filter.c line=810 column=21
c
onf-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink = : pass=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
834            }
835            else if : true=0, false=0
i
f (savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink) {
836                savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink-> : enter=0, leave=0
-
>next : modules/filters/mod_filter.c line=95 column=30
n
ext = : enter=0, leave=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
837                savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink = : pass=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
838            }
839            else {
840                conf : modules/filters/mod_filter.c line=810 column=21
c
onf-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 savelink : modules/filters/mod_filter.c line=807 column=23
s
avelink = : pass=0
=
 newlink : modules/filters/mod_filter.c line=808 column=23
n
ewlink;
841            }
842        }
843    }
844    else if : true=0, false=0
i
f (add : modules/filters/mod_filter.c line=806 column=21
a
dd-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain) {
845        conf : modules/filters/mod_filter.c line=810 column=21
c
onf-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 add : modules/filters/mod_filter.c line=806 column=21
a
dd-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain;
846    }
847    else {
848        conf : modules/filters/mod_filter.c line=810 column=21
c
onf-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain = : enter=0, leave=0
=
 base : modules/filters/mod_filter.c line=805 column=21
b
ase-> : enter=0, leave=0
-
>chain : modules/filters/mod_filter.c line=100 column=23
c
hain;
849    }
850
851    return : pass=0
r
eturn conf : modules/filters/mod_filter.c line=810 column=21
c
onf;
852}
853
854static const command_rec filter_cmds[] = {
855    AP_INIT_TAKE12("FilterDeclare", filter_declare : modules/filters/mod_filter.c line=471 column=20
f
ilter_declare, NULL, OR_OPTIONS,
856        "filter-name [, filter-type]"),
857    /** we don't have a TAKE4, so we have to use RAW_ARGS */
858    AP_INIT_RAW_ARGS("FilterProvider", filter_provider : modules/filters/mod_filter.c line=504 column=20
f
ilter_provider, NULL, OR_OPTIONS,
859        "filter-name, provider-name, dispatch--criterion, dispatch-match"),
860    AP_INIT_ITERATE("FilterChain", filter_chain : modules/filters/mod_filter.c line=659 column=20
f
ilter_chain, NULL, OR_OPTIONS,
861        "list of filter names with optional [+-=!@]"),
862    AP_INIT_TAKE2("FilterTrace", filter_debug : modules/filters/mod_filter.c line=734 column=20
f
ilter_debug, NULL, RSRC_CONF | : pass=0
|
 ACCESS_CONF,
863        "Debug level"),
864#ifndef NO_PROTOCOL
865    AP_INIT_TAKE23("FilterProtocol", filter_protocol : modules/filters/mod_filter.c line=403 column=20
f
ilter_protocol, NULL, OR_OPTIONS,
866        "filter-name [provider-name] protocol-args"),
867#endif
868    { NULL }
869};
870
871module AP_MODULE_DECLARE_DATA filter_module = {
872    STANDARD20_MODULE_STUFF,
873    filter_config : modules/filters/mod_filter.c line=795 column=14
f
ilter_config,
874    filter_merge : modules/filters/mod_filter.c line=803 column=14
f
ilter_merge,
875    NULL,
876    NULL,
877    filter_cmds : modules/filters/mod_filter.c line=854 column=26
f
ilter_cmds,
878    filter_hooks : modules/filters/mod_filter.c line=790 column=13
f
ilter_hooks
879};
880[EOF]


Generated by expcov