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

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

Pass Half Fail Excluded Total
Function
3
12.50%
21
87.50%
0
0.00%
24
100%
Expressions
36
5.06%
676
94.94%
0
0.00%
712
100%
Conditions
0
0.00%
0
0.00%
222
100.00%
0
0.00%
222
100%
MC/DC
0
0.00%
78
100.00%
0
0.00%
78
100%
Branches

if
0
0.00%
0
0.00%
61
100.00%
0
0.00%
61
100%
for
0
0.00%
0
0.00%
9
100.00%
0
0.00%
9
100%
while
0
0.00%
0
0.00%
0
0.00%
0
0.00%
0
100%
case
0
0.00%
0
0.00%
78
100.00%
0
0.00%
78
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/*
18 * http_protocol.c --- routines which directly communicate with the client.
19 *
20 * Code originally by Rob McCool; much redone by Robert S. Thau
21 * and the Apache Software Foundation.
22 */
23
24#include "apr.h"
25#include "apr_strings.h"
26#include "apr_buckets.h"
27#include "apr_lib.h"
28#include "apr_signal.h"
29
30#define APR_WANT_STDIO          /* for sscanf */
31#define APR_WANT_STRFUNC
32#define APR_WANT_MEMFUNC
33#include "apr_want.h"
34
35#define CORE_PRIVATE
36#include "util_filter.h"
37#include "ap_config.h"
38#include "httpd.h"
39#include "http_config.h"
40#include "http_core.h"
41#include "http_protocol.h"
42#include "http_main.h"
43#include "http_request.h"
44#include "http_vhost.h"
45#include "http_log.h"           /* For errors detected in basic auth common
46                                 * support code... */
47#include "apr_date.h"           /* For apr_date_parse_http and APR_DATE_BAD */
48#include "util_charset.h"
49#include "util_ebcdic.h"
50#include "util_time.h"
51#include "ap_mpm.h"
52
53#include "mod_core.h"
54
55#if APR_HAVE_STDARG_H
56#include <stdarg.h>
57#endif
58#if APR_HAVE_UNISTD_H
59#include <unistd.h>
60#endif
61
62/* New Apache routine to map status codes into array indicies
63 *  e.g.  100 -> 0,  101 -> 1,  200 -> 2 ...
64 * The number of status lines must equal the value of RESPONSE_CODES (httpd.h)
65 * and must be listed in order.
66 */
67
68#ifdef UTS21
69/* The second const triggers an assembler bug on UTS 2.1.
70 * Another workaround is to move some code out of this file into another,
71 *   but this is easier.  Dave Dykstra, 3/31/99
72 */
73static const char * status_lines[RESPONSE_CODES] =
74#else
75static const char * const status_lines[RESPONSE_CODES] =
76#endif
77{
78    "100 Continue",
79    "101 Switching Protocols",
80    "102 Processing",
81#define LEVEL_200  3
82    "200 OK",
83    "201 Created",
84    "202 Accepted",
85    "203 Non-Authoritative Information",
86    "204 No Content",
87    "205 Reset Content",
88    "206 Partial Content",
89    "207 Multi-Status",
90#define LEVEL_300 11
91    "300 Multiple Choices",
92    "301 Moved Permanently",
93    "302 Found",
94    "303 See Other",
95    "304 Not Modified",
96    "305 Use Proxy",
97    "306 unused",
98    "307 Temporary Redirect",
99#define LEVEL_400 19
100    "400 Bad Request",
101    "401 Authorization Required",
102    "402 Payment Required",
103    "403 Forbidden",
104    "404 Not Found",
105    "405 Method Not Allowed",
106    "406 Not Acceptable",
107    "407 Proxy Authentication Required",
108    "408 Request Time-out",
109    "409 Conflict",
110    "410 Gone",
111    "411 Length Required",
112    "412 Precondition Failed",
113    "413 Request Entity Too Large",
114    "414 Request-URI Too Large",
115    "415 Unsupported Media Type",
116    "416 Requested Range Not Satisfiable",
117    "417 Expectation Failed",
118    "418 unused",
119    "419 unused",
120    "420 unused",
121    "421 unused",
122    "422 Unprocessable Entity",
123    "423 Locked",
124    "424 Failed Dependency",
125    /* This is a hack, but it is required for ap_index_of_response
126     * to work with 426.
127     */
128    "425 No code",
129    "426 Upgrade Required",
130#define LEVEL_500 46
131    "500 Internal Server Error",
132    "501 Method Not Implemented",
133    "502 Bad Gateway",
134    "503 Service Temporarily Unavailable",
135    "504 Gateway Time-out",
136    "505 HTTP Version Not Supported",
137    "506 Variant Also Negotiates",
138    "507 Insufficient Storage",
139    "508 unused",
140    "509 unused",
141    "510 Not Extended"
142};
143
144APR_HOOK_STRUCT(
145    APR_HOOK_LINK(insert_error_filter)
146)
147
148AP_IMPLEMENT_HOOK_VOID(insert_error_filter, (request_rec *r), (r : modules/http/http_protocol.c line=148 column=59
r
))
149
150/* The index of the first bit field that is used to index into a limit
151 * bitmask. M_INVALID + 1 to METHOD_NUMBER_LAST.
152 */
153#define METHOD_NUMBER_FIRST (M_INVALID + : pass=1
+
 1)
154
155/* The max method number. Method numbers are used to shift bitmasks,
156 * so this cannot exceed 63, and all bits high is equal to -1, which is a
157 * special flag, so the last bit used has index 62.
158 */
159#define METHOD_NUMBER_LAST  62
160
161
162AP_DECLARE(int) ap_set_keepalive : call=0
a
p_set_keepalive(request_rec *r)
163{
164    int ka_sent = 0;
165    int left = r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>keep_alive_max : include/httpd.h line=1220 column=9
k
eep_alive_max - : pass=0
-
 r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>keepalives : include/httpd.h line=1081 column=9
k
eepalives;
166    int wimpy = ap_find_token : enter=0, leave=0

ap_find_token : include/httpd.h line=1432 column=17
a
p_find_token(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
167                              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/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Connection"),
168                              "close");
169    const char *conn = 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/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "Connection");
170
171    /* The following convoluted conditional determines whether or not
172     * the current connection should remain persistent after this response
173     * (a.k.a. HTTP Keep-Alive) and whether or not the output message
174     * body should use the HTTP/1.1 chunked transfer-coding.  In English,
175     *
176     *   IF  we have not marked this connection as errored;
177     *   and the client isn't expecting 100-continue (PR47087 - more
178     *       input here could be the client continuing when we're
179     *       closing the request).
180     *   and the response body has a defined length due to the status code
181     *       being 304 or 204, the request method being HEAD, already
182     *       having defined Content-Length or Transfer-Encoding: chunked, or
183     *       the request version being HTTP/1.1 and thus capable of being set
184     *       as chunked [we know the (r->chunked = 1) side-effect is ugly];
185     *   and the server configuration enables keep-alive;
186     *   and the server configuration has a reasonable inter-request timeout;
187     *   and there is no maximum # requests or the max hasn't been reached;
188     *   and the response status does not require a close;
189     *   and the response generator has not already indicated close;
190     *   and the client did not request non-persistence (Connection: close);
191     *   and    we haven't been configured to ignore the buggy twit
192     *       or they're a buggy twit coming through a HTTP/1.1 proxy
193     *   and    the client is requesting an HTTP/1.0-style keep-alive
194     *       or the client claims to be HTTP/1.1 compliant (perhaps a proxy);
195     *   and this MPM process is not already exiting
196     *   THEN we can be persistent, which requires more headers be output.
197     *
198     * Note that the condition evaluation order is extremely important.
199     */
200    if : true=0, false=0
i
f ((r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>keepalive : include/httpd.h line=1074 column=25
k
eepalive != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
AP_CONN_CLOSE : include/httpd.h line=1038 column=5
A
P_CONN_CLOSE)
201        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>expecting_100 : include/httpd.h line=886 column=14
e
xpecting_100
202        && : true=0, false=0
&
& ((r : modules/http/http_protocol.c line=162 column=47
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
= HTTP_NOT_MODIFIED)
203            || : true=0, false=0
|
| (r : modules/http/http_protocol.c line=162 column=47
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
= HTTP_NO_CONTENT)
204            || : true=0, false=0
|
r : modules/http/http_protocol.c line=162 column=47
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>header_only : include/httpd.h line=808 column=9
h
eader_only
205            || : true=0, false=0
|
MC/DC independently affect : true=0, false=0
apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
aTF
pr_table_get(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Content-Length")
206            || : true=0, false=0
|
MC/DC independently affect : true=0, false=0
ap_find_last_token : enter=0, leave=0

ap_find_last_token : include/httpd.h line=1441 column=17
aTF
p_find_last_token(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
207                                  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/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out,
208                                                "Transfer-Encoding"),
209                                  "chunked")
210            || : true=0, false=0
|
| ((r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>proto_num : include/httpd.h line=812 column=9
p
roto_num >= : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
= HTTP_VERSION(1,1))
211                && : true=0, false=0
&
& (r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>chunked : include/httpd.h line=869 column=9
c
hunked MC/DC independently affect : true=0, false=0
= : enter=0, leave=0
=TF
 1))) /* THIS CODE IS CORRECT, see above. */
212        && : true=0, false=0
&
r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erverMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>keep_alive : include/httpd.h line=1222 column=9
k
eep_alive
213        && : true=0, false=0
&
& (r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>keep_alive_timeout : include/httpd.h line=1218 column=25
k
eep_alive_timeout > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 0)
214        && : true=0, false=0
&
& ((r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>keep_alive_max : include/httpd.h line=1220 column=9
k
eep_alive_max == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0)
215            || : true=0, false=0
|
| (left : modules/http/http_protocol.c line=165 column=9
l
eft > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 0))
216        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_status_drops_connection(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus)
217        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
wimpy : modules/http/http_protocol.c line=166 column=9
w
impy
218        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_find_token : enter=0, leave=0

ap_find_token : include/httpd.h line=1432 column=17
a
p_find_token(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, conn : modules/http/http_protocol.c line=169 column=17
c
onn, "close")
219        && : 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(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env, "nokeepalive")
220            || : true=0, false=0
|
MC/DC independently affect : true=0, false=0
apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
aTF
pr_table_get(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "Via"))
221        && : true=0, false=0
&
& ((ka_sent : modules/http/http_protocol.c line=164 column=9
k
a_sent = : pass=0
MC/DC independently affect : true=0, false=0
=TF
 ap_find_token : enter=0, leave=0

ap_find_token : include/httpd.h line=1432 column=17
a
p_find_token(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, conn : modules/http/http_protocol.c line=169 column=17
c
onn, "keep-alive"))
222            || : true=0, false=0
|
| (r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>proto_num : include/httpd.h line=812 column=9
p
roto_num >= : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
= HTTP_VERSION(1,1)))
223        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_graceful_stop_signalled : enter=0, leave=0

ap_graceful_stop_signalled : include/ap_mpm.h line=99 column=17
a
p_graceful_stop_signalled()) {
224
225        r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>keepalive : include/httpd.h line=1074 column=25
k
eepalive = : enter=0, leave=0
=
 AP_CONN_KEEPALIVE : include/httpd.h line=1039 column=5
A
P_CONN_KEEPALIVE;
226        r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>keepalives : include/httpd.h line=1081 column=9
k
eepalives++ : pass=0
+
+;
227
228        /* If they sent a Keep-Alive token, send one back */
229        if : true=0, false=0
i
f (ka_sent : modules/http/http_protocol.c line=164 column=9
k
a_sent) {
230            if : true=0, false=0
i
f (r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>keep_alive_max : include/httpd.h line=1220 column=9
k
eep_alive_max) {
231                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/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Keep-Alive",
232                       apr_psprintf : enter=0, leave=0

apr_psprintf : /usr/include/apr-1/apr_strings.h line=170 column=28
a
pr_psprintf(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, "timeout=%d, max=%d",
233                            (int)apr_time_sec(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>keep_alive_timeout : include/httpd.h line=1218 column=25
k
eep_alive_timeout),
234                            left : modules/http/http_protocol.c line=165 column=9
l
eft));
235            }
236            else {
237                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/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Keep-Alive",
238                      apr_psprintf : enter=0, leave=0

apr_psprintf : /usr/include/apr-1/apr_strings.h line=170 column=28
a
pr_psprintf(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, "timeout=%d",
239                            (int)apr_time_sec(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>keep_alive_timeout : include/httpd.h line=1218 column=25
k
eep_alive_timeout)));
240            }
241            apr_table_mergen : enter=0, leave=0

apr_table_mergen : /usr/include/apr-1/apr_tables.h line=311 column=19
a
pr_table_mergen(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Connection", "Keep-Alive");
242        }
243
244        return : pass=0
r
eturn 1;
245    }
246
247    /* Otherwise, we need to indicate that we will be closing this
248     * connection immediately after the current response.
249     *
250     * We only really need to send "close" to HTTP/1.1 clients, but we
251     * always send it anyway, because a broken proxy may identify itself
252     * as HTTP/1.0, but pass our request along with our HTTP/1.1 tag
253     * to a HTTP/1.1 client. Better safe than sorry.
254     */
255    if : true=0, false=0
i
f (! : true=0, false=0
!
wimpy : modules/http/http_protocol.c line=166 column=9
w
impy) {
256        apr_table_mergen : enter=0, leave=0

apr_table_mergen : /usr/include/apr-1/apr_tables.h line=311 column=19
a
pr_table_mergen(r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Connection", "close");
257    }
258
259    /*
260     * If we had previously been a keepalive connection and this
261     * is the last one, then bump up the number of keepalives
262     * we've had
263     */
264    if : true=0, false=0
i
f ((r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>keepalive : include/httpd.h line=1074 column=25
k
eepalive != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
AP_CONN_CLOSE : include/httpd.h line=1038 column=5
A
P_CONN_CLOSE)
265        && : true=0, false=0
&
r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erverMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>keep_alive_max : include/httpd.h line=1220 column=9
k
eep_alive_max
266        && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
left : modules/http/http_protocol.c line=165 column=9
l
eft) {
267        r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>keepalives : include/httpd.h line=1081 column=9
k
eepalives++ : pass=0
+
+;
268    }
269    r : modules/http/http_protocol.c line=162 column=47
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>keepalive : include/httpd.h line=1074 column=25
k
eepalive = : enter=0, leave=0
=
 AP_CONN_CLOSE : include/httpd.h line=1038 column=5
A
P_CONN_CLOSE;
270
271    return : pass=0
r
eturn 0;
272}
273
274AP_DECLARE(int) ap_meets_conditions : call=0
a
p_meets_conditions(request_rec *r)
275{
276    const char *etag;
277    const char *if_match, *if_modified_since, *if_unmodified, *if_nonematch;
278    apr_time_t tmp_time;
279    apr_int64_t mtime;
280    int not_modified = 0;
281
282    /* Check for conditional requests --- note that we only want to do
283     * this if we are successful so far and we are not processing a
284     * subrequest or an ErrorDocument.
285     *
286     * The order of the checks is important, since ETag checks are supposed
287     * to be more accurate than checks relative to the modification time.
288     * However, not all documents are guaranteed to *have* ETags, and some
289     * might have Last-Modified values w/o ETags, so this gets a little
290     * complicated.
291     */
292
293    if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_is_HTTP_SUCCESS(r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus) || : true=0, false=0
|
r : modules/http/http_protocol.c line=274 column=50
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>no_local_copy : include/httpd.h line=937 column=9
n
o_local_copy) {
294        return : pass=0
r
eturn OK;
295    }
296
297    etag : modules/http/http_protocol.c line=276 column=17
e
tag = : 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/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "ETag");
298
299    /* All of our comparisons must be in seconds, because that's the
300     * highest time resolution the HTTP specification allows.
301     */
302    /* XXX: we should define a "time unset" constant */
303    tmp_time : modules/http/http_protocol.c line=278 column=16
t
mp_time = : pass=0
=
 ((r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>mtime : include/httpd.h line=864 column=16
m
time != : true=0, false=0
!
= 0) conditional operator : true=0, false=0
?
 r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>mtime : include/httpd.h line=864 column=16
m
time : apr_time_now : enter=0, leave=0

apr_time_now : /usr/include/apr-1/apr_time.h line=85 column=25
a
pr_time_now());
304    mtime : modules/http/http_protocol.c line=279 column=17
m
time = : pass=0
=
  apr_time_sec(tmp_time : modules/http/http_protocol.c line=278 column=16
t
mp_time);
305
306    /* If an If-Match request-header field was given
307     * AND the field value is not "*" (meaning match anything)
308     * AND if our strong ETag does not match any entity tag in that field,
309     *     respond with a status of 412 (Precondition Failed).
310     */
311    if : true=0, false=0
i
f ((if_match : modules/http/http_protocol.c line=277 column=17
i
f_match = : 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/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "If-Match")) != : true=0, false=0
!
= NULL) {
312        if : true=0, false=0
i
f (if_match : modules/http/http_protocol.c line=277 column=17
i
f_match[] : enter=0, leave=0
[
0] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '*'
313            && : true=0, false=0
&
& (etag : modules/http/http_protocol.c line=276 column=17
e
tag == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= NULL || : true=0, false=0
|
etag : modules/http/http_protocol.c line=276 column=17
e
tag[] : enter=0, leave=0
[
0] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'W'
314                || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_find_list_item : enter=0, leave=0

ap_find_list_item : include/httpd.h line=1411 column=17
a
p_find_list_item(r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, if_match : modules/http/http_protocol.c line=277 column=17
i
f_match, etag : modules/http/http_protocol.c line=276 column=17
e
tag))) {
315            return : pass=0
r
eturn HTTP_PRECONDITION_FAILED;
316        }
317    }
318    else {
319        /* Else if a valid If-Unmodified-Since request-header field was given
320         * AND the requested resource has been modified since the time
321         * specified in this field, then the server MUST
322         *     respond with a status of 412 (Precondition Failed).
323         */
324        if_unmodified : modules/http/http_protocol.c line=277 column=48
i
f_unmodified = : 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/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "If-Unmodified-Since");
325        if : true=0, false=0
i
f (if_unmodified : modules/http/http_protocol.c line=277 column=48
i
f_unmodified != : true=0, false=0
!
= NULL) {
326            apr_time_t ius = apr_date_parse_http : enter=0, leave=0

apr_date_parse_http : /usr/include/apr-1/apr_date.h line=73 column=25
a
pr_date_parse_http(if_unmodified : modules/http/http_protocol.c line=277 column=48
i
f_unmodified);
327
328            if : true=0, false=0
i
f ((ius : modules/http/http_protocol.c line=326 column=24
i
us != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_DATE_BAD) && : true=0, false=0
&
& (mtime : modules/http/http_protocol.c line=279 column=17
m
time > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 apr_time_sec(ius : modules/http/http_protocol.c line=326 column=24
i
us))) {
329                return : pass=0
r
eturn HTTP_PRECONDITION_FAILED;
330            }
331        }
332    }
333
334    /* If an If-None-Match request-header field was given
335     * AND the field value is "*" (meaning match anything)
336     *     OR our ETag matches any of the entity tags in that field, fail.
337     *
338     * If the request method was GET or HEAD, failure means the server
339     *    SHOULD respond with a 304 (Not Modified) response.
340     * For all other request methods, failure means the server MUST
341     *    respond with a status of 412 (Precondition Failed).
342     *
343     * GET or HEAD allow weak etag comparison, all other methods require
344     * strong comparison.  We can only use weak if it's not a range request.
345     */
346    if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch = : 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/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "If-None-Match");
347    if : true=0, false=0
i
f (if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch != : true=0, false=0
!
= NULL) {
348        if : true=0, false=0
i
f (r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>method_number : include/httpd.h line=831 column=9
m
ethod_number == : true=0, false=0
=
= M_GET) {
349            if : true=0, false=0
i
f (if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch[] : enter=0, leave=0
[
0] == : true=0, false=0
=
= '*') {
350                not_modified : modules/http/http_protocol.c line=280 column=9
n
ot_modified = : pass=0
=
 1;
351            }
352            else if : true=0, false=0
i
f (etag : modules/http/http_protocol.c line=276 column=17
e
tag != : true=0, false=0
!
= NULL) {
353                if : true=0, false=0
i
f (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/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "Range")) {
354                    not_modified : modules/http/http_protocol.c line=280 column=9
n
ot_modified = : pass=0
=
 etag : modules/http/http_protocol.c line=276 column=17
e
tag[] : enter=0, leave=0
[
0] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= 'W'
355                                   && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
ap_find_list_item : enter=0, leave=0

ap_find_list_item : include/httpd.h line=1411 column=17
aTF
p_find_list_item(r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
356                                                        if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch, etag : modules/http/http_protocol.c line=276 column=17
e
tag);
357                }
358                else {
359                    not_modified : modules/http/http_protocol.c line=280 column=9
n
ot_modified = : pass=0
=
 ap_find_list_item : enter=0, leave=0

ap_find_list_item : include/httpd.h line=1411 column=17
a
p_find_list_item(r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
360                                                     if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch, etag : modules/http/http_protocol.c line=276 column=17
e
tag);
361                }
362            }
363        }
364        else if : true=0, false=0
i
f (if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch[] : enter=0, leave=0
[
0] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= '*'
365                 || : true=0, false=0
|
| (etag : modules/http/http_protocol.c line=276 column=17
e
tag != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= NULL
366                     && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
ap_find_list_item : enter=0, leave=0

ap_find_list_item : include/httpd.h line=1411 column=17
aTF
p_find_list_item(r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch, etag : modules/http/http_protocol.c line=276 column=17
e
tag))) {
367            return : pass=0
r
eturn HTTP_PRECONDITION_FAILED;
368        }
369    }
370
371    /* If a valid If-Modified-Since request-header field was given
372     * AND it is a GET or HEAD request
373     * AND the requested resource has not been modified since the time
374     * specified in this field, then the server MUST
375     *    respond with a status of 304 (Not Modified).
376     * A date later than the server's current request time is invalid.
377     */
378    if : true=0, false=0
i
f (r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>method_number : include/httpd.h line=831 column=9
m
ethod_number == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= M_GET
379        && : true=0, false=0
&
& (MC/DC independently affect : true=0, false=0

not_modified : modules/http/http_protocol.c line=280 column=9
nTF
ot_modified || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
if_nonematch : modules/http/http_protocol.c line=277 column=64
i
f_nonematch)
380        && : true=0, false=0
&
& (if_modified_since : modules/http/http_protocol.c line=277 column=28
i
f_modified_since = : pass=0
=
381              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/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in,
382                            "If-Modified-Since")) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= NULL) {
383        apr_time_t ims_time;
384        apr_int64_t ims, reqtime;
385
386        ims_time : modules/http/http_protocol.c line=383 column=20
i
ms_time = : pass=0
=
 apr_date_parse_http : enter=0, leave=0

apr_date_parse_http : /usr/include/apr-1/apr_date.h line=73 column=25
a
pr_date_parse_http(if_modified_since : modules/http/http_protocol.c line=277 column=28
i
f_modified_since);
387        ims : modules/http/http_protocol.c line=384 column=21
i
ms = : pass=0
=
 apr_time_sec(ims_time : modules/http/http_protocol.c line=383 column=20
i
ms_time);
388        reqtime : modules/http/http_protocol.c line=384 column=26
r
eqtime = : pass=0
=
 apr_time_sec(r : modules/http/http_protocol.c line=274 column=50
r
-> : enter=0, leave=0
-
>request_time : include/httpd.h line=817 column=16
r
equest_time);
389
390        not_modified : modules/http/http_protocol.c line=280 column=9
n
ot_modified = : pass=0
=
 ims : modules/http/http_protocol.c line=384 column=21
i
ms >= : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
mtime : modules/http/http_protocol.c line=279 column=17
m
time && : true=0, false=0
&
ims : modules/http/http_protocol.c line=384 column=21
i
ms <= : true=0, false=0
MC/DC independently affect : true=0, false=0
<TF
reqtime : modules/http/http_protocol.c line=384 column=26
r
eqtime;
391    }
392
393    if : true=0, false=0
i
f (not_modified : modules/http/http_protocol.c line=280 column=9
n
ot_modified) {
394        return : pass=0
r
eturn HTTP_NOT_MODIFIED;
395    }
396
397    return : pass=0
r
eturn OK;
398}
399
400/**
401 * Singleton registry of additional methods. This maps new method names
402 * such as "MYGET" to methnums, which are int offsets into bitmasks.
403 *
404 * This follows the same technique as standard M_GET, M_POST, etc. These
405 * are dynamically assigned when modules are loaded and <Limit GET MYGET>
406 * directives are processed.
407 */
408static apr_hash_t *methods_registry = NULL;
409static int cur_method_number = METHOD_NUMBER_FIRST;
410
411/* internal function to register one method/number pair */
412static void register_one_method : call=26
r
egister_one_method(apr_pool_t *p, const char *methname,
413                                int methnum)
414{
415    int *pnum = apr_palloc : enter=26, leave=26

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(p : modules/http/http_protocol.c line=412 column=45
p
, sizeof(*pnum));
416
417    *pnum : modules/http/http_protocol.c line=415 column=10
p
num = : enter=26, leave=26
=
 methnum : modules/http/http_protocol.c line=413 column=37
m
ethnum;
418    apr_hash_set : enter=26, leave=26

apr_hash_set : /usr/include/apr-1/apr_hash.h line=107 column=19
a
pr_hash_set(methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry, methname : modules/http/http_protocol.c line=412 column=60
m
ethname, APR_HASH_KEY_STRING, pnum : modules/http/http_protocol.c line=415 column=10
p
num);
419}
420
421/* This internal function is used to clear the method registry
422 * and reset the cur_method_number counter.
423 */
424static apr_status_t ap_method_registry_destroy : call=1
a
p_method_registry_destroy(void *notused)
425{
426    methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry = : pass=1
=
 NULL;
427    cur_method_number : modules/http/http_protocol.c line=409 column=12
c
ur_method_number = : pass=1
=
 METHOD_NUMBER_FIRST;
428    return : pass=1
r
eturn APR_SUCCESS;
429}
430
431AP_DECLARE(void) ap_method_registry_init : call=1
a
p_method_registry_init(apr_pool_t *p)
432{
433    methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry = : pass=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(p : modules/http/http_protocol.c line=431 column=54
p
);
434    apr_pool_cleanup_register : enter=1, leave=1

apr_pool_cleanup_register : /usr/include/apr-1/apr_pools.h line=603 column=19
a
pr_pool_cleanup_register(p : modules/http/http_protocol.c line=431 column=54
p
, NULL,
435                              ap_method_registry_destroy : modules/http/http_protocol.c line=424 column=21
a
p_method_registry_destroy,
436                              apr_pool_cleanup_null : /usr/include/apr-1/apr_pools.h line=682 column=34 apr_pool_cleanup_null);
437
438    /* put all the standard methods into the registry hash to ease the
439       mapping operations between name and number */
440    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "GET", M_GET);
441    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "PUT", M_PUT);
442    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "POST", M_POST);
443    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "DELETE", M_DELETE);
444    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "CONNECT", M_CONNECT);
445    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "OPTIONS", M_OPTIONS);
446    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "TRACE", M_TRACE);
447    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "PATCH", M_PATCH);
448    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "PROPFIND", M_PROPFIND);
449    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "PROPPATCH", M_PROPPATCH);
450    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "MKCOL", M_MKCOL);
451    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "COPY", M_COPY);
452    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "MOVE", M_MOVE);
453    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "LOCK", M_LOCK);
454    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "UNLOCK", M_UNLOCK);
455    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "VERSION-CONTROL", M_VERSION_CONTROL);
456    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "CHECKOUT", M_CHECKOUT);
457    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "UNCHECKOUT", M_UNCHECKOUT);
458    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "CHECKIN", M_CHECKIN);
459    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "UPDATE", M_UPDATE);
460    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "LABEL", M_LABEL);
461    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "REPORT", M_REPORT);
462    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "MKWORKSPACE", M_MKWORKSPACE);
463    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "MKACTIVITY", M_MKACTIVITY);
464    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "BASELINE-CONTROL", M_BASELINE_CONTROL);
465    register_one_method : enter=1, leave=1

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=431 column=54
p
, "MERGE", M_MERGE);
466}
467
468AP_DECLARE(int) ap_method_register : call=0
a
p_method_register(apr_pool_t *p, const char *methname)
469{
470    int *methnum;
471
472    if : true=0, false=0
i
f (methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry == : true=0, false=0
=
= NULL) {
473        ap_method_registry_init : enter=0, leave=0

ap_method_registry_init : modules/http/http_protocol.c line=431 column=18
a
p_method_registry_init(p : modules/http/http_protocol.c line=468 column=48
p
);
474    }
475
476    if : true=0, false=0
i
f (methname : modules/http/http_protocol.c line=468 column=63
m
ethname == : true=0, false=0
=
= NULL) {
477        return : pass=0
r
eturn M_INVALID;
478    }
479
480    /* Check if the method was previously registered.  If it was
481     * return the associated method number.
482     */
483    methnum : modules/http/http_protocol.c line=470 column=10
m
ethnum = : pass=0
=
 (int *)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(methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry, methname : modules/http/http_protocol.c line=468 column=63
m
ethname,
484                                  APR_HASH_KEY_STRING);
485    if : true=0, false=0
i
f (methnum : modules/http/http_protocol.c line=470 column=10
m
ethnum != : true=0, false=0
!
= NULL)
486        return : pass=0
r
eturn * dereference : enter=0, leave=0
*
methnum : modules/http/http_protocol.c line=470 column=10
m
ethnum;
487
488    if : true=0, false=0
i
f (cur_method_number : modules/http/http_protocol.c line=409 column=12
c
ur_method_number > : true=0, false=0
>
 METHOD_NUMBER_LAST) {
489        /* The method registry  has run out of dynamically
490         * assignable method numbers. Log this and return M_INVALID.
491         */
492        ap_log_perror : enter=0, leave=0

ap_log_perror : include/http_log.h line=195 column=18
a
p_log_perror(APLOG_MARK, APLOG_ERR, 0, p : modules/http/http_protocol.c line=468 column=48
p
,
493                      "Maximum new request methods %d reached while "
494                      "registering method %s.",
495                      METHOD_NUMBER_LAST, methname : modules/http/http_protocol.c line=468 column=63
m
ethname);
496        return : pass=0
r
eturn M_INVALID;
497    }
498
499    register_one_method : enter=0, leave=0

register_one_method : modules/http/http_protocol.c line=412 column=13
r
egister_one_method(p : modules/http/http_protocol.c line=468 column=48
p
methname : modules/http/http_protocol.c line=468 column=63
m
ethname, cur_method_number : modules/http/http_protocol.c line=409 column=12
c
ur_method_number);
500    return : pass=0
r
eturn cur_method_number : modules/http/http_protocol.c line=409 column=12
c
ur_method_number++ : pass=0
+
+;
501}
502
503#define UNKNOWN_METHOD (-1)
504
505static int lookup_builtin_method : call=0
l
ookup_builtin_method(const char *method, apr_size_t len)
506{
507    /* Note: the following code was generated by the "shilka" tool from
508       the "cocom" parsing/compilation toolkit. It is an optimized lookup
509       based on analysis of the input keywords. Postprocessing was done
510       on the shilka output, but the basic structure and analysis is
511       from there. Should new HTTP methods be added, then manual insertion
512       into this code is fine, or simply re-running the shilka tool on
513       the appropriate input. */
514
515    /* Note: it is also quite reasonable to just use our method_registry,
516       but I'm assuming (probably incorrectly) we want more speed here
517       (based on the optimizations the previous code was doing). */
518
519    switch : pass=0
s
witch (len : modules/http/http_protocol.c line=505 column=65
l
en)
520    {
521    case : true=0, false=0
c
ase 3:
522        switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
0])
523        {
524        case : true=0, false=0
c
ase 'P':
525            return : pass=0
r
eturn (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'U'
526                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'T'
527                    conditional operator : true=0, false=0
?
 M_PUT : UNKNOWN_METHOD);
528        case : true=0, false=0
c
ase 'G':
529            return : pass=0
r
eturn (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'E'
530                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'T'
531                    conditional operator : true=0, false=0
?
 M_GET : UNKNOWN_METHOD);
532        default : true=0, false=0
d
efault:
533            return : pass=0
r
eturn UNKNOWN_METHOD;
534        }
535
536    case : true=0, false=0
c
ase 4:
537        switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
0])
538        {
539        case : true=0, false=0
c
ase 'H':
540            return : pass=0
r
eturn (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'E'
541                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'A'
542                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
3] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'D'
543                    conditional operator : true=0, false=0
?
 M_GET : UNKNOWN_METHOD);
544        case : true=0, false=0
c
ase 'P':
545            return : pass=0
r
eturn (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'O'
546                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'S'
547                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
3] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'T'
548                    conditional operator : true=0, false=0
?
 M_POST : UNKNOWN_METHOD);
549        case : true=0, false=0
c
ase 'M':
550            return : pass=0
r
eturn (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'O'
551                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'V'
552                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
3] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'E'
553                    conditional operator : true=0, false=0
?
 M_MOVE : UNKNOWN_METHOD);
554        case : true=0, false=0
c
ase 'L':
555            return : pass=0
r
eturn (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'O'
556                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'C'
557                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
3] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'K'
558                    conditional operator : true=0, false=0
?
 M_LOCK : UNKNOWN_METHOD);
559        case : true=0, false=0
c
ase 'C':
560            return : pass=0
r
eturn (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'O'
561                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'P'
562                    && : true=0, false=0
&
method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
3] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 'Y'
563                    conditional operator : true=0, false=0
?
 M_COPY : UNKNOWN_METHOD);
564        default : true=0, false=0
d
efault:
565            return : pass=0
r
eturn UNKNOWN_METHOD;
566        }
567
568    case : true=0, false=0
c
ase 5:
569        switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
2])
570        {
571        case : true=0, false=0
c
ase 'T':
572            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "PATCH", 5) == : true=0, false=0
=
= 0
573                    conditional operator : true=0, false=0
?
 M_PATCH : UNKNOWN_METHOD);
574        case : true=0, false=0
c
ase 'R':
575            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "MERGE", 5) == : true=0, false=0
=
= 0
576                    conditional operator : true=0, false=0
?
 M_MERGE : UNKNOWN_METHOD);
577        case : true=0, false=0
c
ase 'C':
578            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "MKCOL", 5) == : true=0, false=0
=
= 0
579                    conditional operator : true=0, false=0
?
 M_MKCOL : UNKNOWN_METHOD);
580        case : true=0, false=0
c
ase 'B':
581            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "LABEL", 5) == : true=0, false=0
=
= 0
582                    conditional operator : true=0, false=0
?
 M_LABEL : UNKNOWN_METHOD);
583        case : true=0, false=0
c
ase 'A':
584            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "TRACE", 5) == : true=0, false=0
=
= 0
585                    conditional operator : true=0, false=0
?
 M_TRACE : UNKNOWN_METHOD);
586        default : true=0, false=0
d
efault:
587            return : pass=0
r
eturn UNKNOWN_METHOD;
588        }
589
590    case : true=0, false=0
c
ase 6:
591        switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
0])
592        {
593        case : true=0, false=0
c
ase 'U':
594            switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
5])
595            {
596            case : true=0, false=0
c
ase 'K':
597                return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "UNLOCK", 6) == : true=0, false=0
=
= 0
598                        conditional operator : true=0, false=0
?
 M_UNLOCK : UNKNOWN_METHOD);
599            case : true=0, false=0
c
ase 'E':
600                return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "UPDATE", 6) == : true=0, false=0
=
= 0
601                        conditional operator : true=0, false=0
?
 M_UPDATE : UNKNOWN_METHOD);
602            default : true=0, false=0
d
efault:
603                return : pass=0
r
eturn UNKNOWN_METHOD;
604            }
605        case : true=0, false=0
c
ase 'R':
606            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "REPORT", 6) == : true=0, false=0
=
= 0
607                    conditional operator : true=0, false=0
?
 M_REPORT : UNKNOWN_METHOD);
608        case : true=0, false=0
c
ase 'D':
609            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "DELETE", 6) == : true=0, false=0
=
= 0
610                    conditional operator : true=0, false=0
?
 M_DELETE : UNKNOWN_METHOD);
611        default : true=0, false=0
d
efault:
612            return : pass=0
r
eturn UNKNOWN_METHOD;
613        }
614
615    case : true=0, false=0
c
ase 7:
616        switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
1])
617        {
618        case : true=0, false=0
c
ase 'P':
619            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "OPTIONS", 7) == : true=0, false=0
=
= 0
620                    conditional operator : true=0, false=0
?
 M_OPTIONS : UNKNOWN_METHOD);
621        case : true=0, false=0
c
ase 'O':
622            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "CONNECT", 7) == : true=0, false=0
=
= 0
623                    conditional operator : true=0, false=0
?
 M_CONNECT : UNKNOWN_METHOD);
624        case : true=0, false=0
c
ase 'H':
625            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "CHECKIN", 7) == : true=0, false=0
=
= 0
626                    conditional operator : true=0, false=0
?
 M_CHECKIN : UNKNOWN_METHOD);
627        default : true=0, false=0
d
efault:
628            return : pass=0
r
eturn UNKNOWN_METHOD;
629        }
630
631    case : true=0, false=0
c
ase 8:
632        switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
0])
633        {
634        case : true=0, false=0
c
ase 'P':
635            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "PROPFIND", 8) == : true=0, false=0
=
= 0
636                    conditional operator : true=0, false=0
?
 M_PROPFIND : UNKNOWN_METHOD);
637        case : true=0, false=0
c
ase 'C':
638            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "CHECKOUT", 8) == : true=0, false=0
=
= 0
639                    conditional operator : true=0, false=0
?
 M_CHECKOUT : UNKNOWN_METHOD);
640        default : true=0, false=0
d
efault:
641            return : pass=0
r
eturn UNKNOWN_METHOD;
642        }
643
644    case : true=0, false=0
c
ase 9:
645        return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "PROPPATCH", 9) == : true=0, false=0
=
= 0
646                conditional operator : true=0, false=0
?
 M_PROPPATCH : UNKNOWN_METHOD);
647
648    case : true=0, false=0
c
ase 10:
649        switch : pass=0
s
witch (method : modules/http/http_protocol.c line=505 column=46
m
ethod[] : enter=0, leave=0
[
0])
650        {
651        case : true=0, false=0
c
ase 'U':
652            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "UNCHECKOUT", 10) == : true=0, false=0
=
= 0
653                    conditional operator : true=0, false=0
?
 M_UNCHECKOUT : UNKNOWN_METHOD);
654        case : true=0, false=0
c
ase 'M':
655            return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "MKACTIVITY", 10) == : true=0, false=0
=
= 0
656                    conditional operator : true=0, false=0
?
 M_MKACTIVITY : UNKNOWN_METHOD);
657        default : true=0, false=0
d
efault:
658            return : pass=0
r
eturn UNKNOWN_METHOD;
659        }
660
661    case : true=0, false=0
c
ase 11:
662        return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "MKWORKSPACE", 11) == : true=0, false=0
=
= 0
663                conditional operator : true=0, false=0
?
 M_MKWORKSPACE : UNKNOWN_METHOD);
664
665    case : true=0, false=0
c
ase 15:
666        return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "VERSION-CONTROL", 15) == : true=0, false=0
=
= 0
667                conditional operator : true=0, false=0
?
 M_VERSION_CONTROL : UNKNOWN_METHOD);
668
669    case : true=0, false=0
c
ase 16:
670        return : pass=0
r
eturn (memcmp : enter=0, leave=0

memcmp : /usr/include/string.h line=68 column=12
m
emcmp(method : modules/http/http_protocol.c line=505 column=46
m
ethod, "BASELINE-CONTROL", 16) == : true=0, false=0
=
= 0
671                conditional operator : true=0, false=0
?
 M_BASELINE_CONTROL : UNKNOWN_METHOD);
672
673    default : true=0, false=0
d
efault:
674        return : pass=0
r
eturn UNKNOWN_METHOD;
675    }
676
677    /* NOTREACHED */
678}
679
680/* Get the method number associated with the given string, assumed to
681 * contain an HTTP method.  Returns M_INVALID if not recognized.
682 *
683 * This is the first step toward placing method names in a configurable
684 * list.  Hopefully it (and other routines) can eventually be moved to
685 * something like a mod_http_methods.c, complete with config stuff.
686 */
687AP_DECLARE(int) ap_method_number_of : call=0
a
p_method_number_of(const char *method)
688{
689    int len = strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(method : modules/http/http_protocol.c line=687 column=49
m
ethod);
690    int which = lookup_builtin_method : enter=0, leave=0

lookup_builtin_method : modules/http/http_protocol.c line=505 column=12
l
ookup_builtin_method(method : modules/http/http_protocol.c line=687 column=49
m
ethod, len : modules/http/http_protocol.c line=689 column=9
l
en);
691
692    if : true=0, false=0
i
f (which : modules/http/http_protocol.c line=690 column=9
w
hich != : true=0, false=0
!
= UNKNOWN_METHOD)
693        return : pass=0
r
eturn which : modules/http/http_protocol.c line=690 column=9
w
hich;
694
695    /* check if the method has been dynamically registered */
696    if : true=0, false=0
i
f (methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry != : true=0, false=0
!
= NULL) {
697        int *methnum = 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(methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry, method : modules/http/http_protocol.c line=687 column=49
m
ethod, len : modules/http/http_protocol.c line=689 column=9
l
en);
698
699        if : true=0, false=0
i
f (methnum : modules/http/http_protocol.c line=697 column=14
m
ethnum != : true=0, false=0
!
= NULL) {
700            return : pass=0
r
eturn * dereference : enter=0, leave=0
*
methnum : modules/http/http_protocol.c line=697 column=14
m
ethnum;
701        }
702    }
703
704    return : pass=0
r
eturn M_INVALID;
705}
706
707/*
708 * Turn a known method number into a name.
709 */
710AP_DECLARE(const char *) ap_method_name_of : call=0
a
p_method_name_of(apr_pool_t *p, int methnum)
711{
712    apr_hash_index_t *hi = apr_hash_first : enter=0, leave=0

apr_hash_first : /usr/include/apr-1/apr_hash.h line=148 column=33
a
pr_hash_first(p : modules/http/http_protocol.c line=710 column=56
p
methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry);
713
714    /* scan through the hash table, looking for a value that matches
715       the provided method number. */
716    for : true=0, false=0
f
or (; hi : modules/http/http_protocol.c line=712 column=23
h
i; hi : modules/http/http_protocol.c line=712 column=23
h
= : pass=0
=
 apr_hash_next : enter=0, leave=0

apr_hash_next : /usr/include/apr-1/apr_hash.h line=156 column=33
a
pr_hash_next(hi : modules/http/http_protocol.c line=712 column=23
h
i)) {
717        const void *key;
718        void *val;
719
720        apr_hash_this : enter=0, leave=0

apr_hash_this : /usr/include/apr-1/apr_hash.h line=167 column=19
a
pr_hash_this(hi : modules/http/http_protocol.c line=712 column=23
h
i, &key : modules/http/http_protocol.c line=717 column=21
k
ey, NULL, &val : modules/http/http_protocol.c line=718 column=15
v
al);
721        if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
(int *)val : modules/http/http_protocol.c line=718 column=15
v
al == : true=0, false=0
=
methnum : modules/http/http_protocol.c line=710 column=63
m
ethnum)
722            return : pass=0
r
eturn key : modules/http/http_protocol.c line=717 column=21
k
ey;
723    }
724
725    /* it wasn't found in the hash */
726    return : pass=0
r
eturn NULL;
727}
728
729/* The index is found by its offset from the x00 code of each level.
730 * Although this is fast, it will need to be replaced if some nutcase
731 * decides to define a high-numbered code before the lower numbers.
732 * If that sad event occurs, replace the code below with a linear search
733 * from status_lines[shortcut[i]] to status_lines[shortcut[i+1]-1];
734 */
735AP_DECLARE(int) ap_index_of_response : call=0
a
p_index_of_response(int status)
736{
737    static int shortcut[6] = {0, LEVEL_200, LEVEL_300, LEVEL_400,
738    LEVEL_500, RESPONSE_CODES};
739    int i, pos;
740
741    if : true=0, false=0
i
f (status : modules/http/http_protocol.c line=735 column=42
s
tatus < : true=0, false=0
<
 100) {               /* Below 100 is illegal for HTTP status */
742        return : pass=0
r
eturn LEVEL_500;
743    }
744
745    for : true=0, false=0
f
or (i : modules/http/http_protocol.c line=739 column=9
i
 = : pass=0
=
 0; i : modules/http/http_protocol.c line=739 column=9
i
 < : true=0, false=0
<
 5; i : modules/http/http_protocol.c line=739 column=9
i
++ : pass=0
+
+) {
746        status : modules/http/http_protocol.c line=735 column=42
s
tatus -= : pass=0
-
= 100;
747        if : true=0, false=0
i
f (status : modules/http/http_protocol.c line=735 column=42
s
tatus < : true=0, false=0
<
 100) {
748            pos : modules/http/http_protocol.c line=739 column=12
p
os = : pass=0
=
 (status : modules/http/http_protocol.c line=735 column=42
s
tatus + : pass=0
+
 shortcut : modules/http/http_protocol.c line=737 column=16
s
hortcut[] : enter=0, leave=0
[
i : modules/http/http_protocol.c line=739 column=9
i
]);
749            if : true=0, false=0
i
f (pos : modules/http/http_protocol.c line=739 column=12
p
os < : true=0, false=0
<
 shortcut : modules/http/http_protocol.c line=737 column=16
s
hortcut[] : enter=0, leave=0
[
i : modules/http/http_protocol.c line=739 column=9
i
 + : pass=0
+
 1]) {
750                return : pass=0
r
eturn pos : modules/http/http_protocol.c line=739 column=12
p
os;
751            }
752            else {
753                return : pass=0
r
eturn LEVEL_500;            /* status unknown (falls in gap) */
754            }
755        }
756    }
757    return : pass=0
r
eturn LEVEL_500;                         /* 600 or above is also illegal */
758}
759
760AP_DECLARE(const char *) ap_get_status_line : call=0
a
p_get_status_line(int status)
761{
762    return : pass=0
r
eturn status_lines : modules/http/http_protocol.c line=75 column=27
s
tatus_lines[] : enter=0, leave=0
[
ap_index_of_response : enter=0, leave=0

ap_index_of_response : modules/http/http_protocol.c line=735 column=17
a
p_index_of_response(status : modules/http/http_protocol.c line=760 column=49
s
tatus)];
763}
764
765/* Build the Allow field-value from the request handler method mask.
766 * Note that we always allow TRACE, since it is handled below.
767 */
768static char *make_allow : call=0
m
ake_allow(request_rec *r)
769{
770    char *list;
771    apr_int64_t mask;
772    apr_array_header_t *allow = apr_array_make : enter=0, leave=0

apr_array_make : /usr/include/apr-1/apr_tables.h line=111 column=35
a
pr_array_make(r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, 10, sizeof(char *));
773    apr_hash_index_t *hi = apr_hash_first : enter=0, leave=0

apr_hash_first : /usr/include/apr-1/apr_hash.h line=148 column=33
a
pr_hash_first(r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, methods_registry : modules/http/http_protocol.c line=408 column=20
m
ethods_registry);
774    /* For TRACE below */
775    core_server_config *conf =
776        ap_get_module_config(r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>module_config : include/httpd.h line=1207 column=30
m
odule_config, &core_module : include/http_core.h line=345 column=31
c
ore_module);
777
778    mask : modules/http/http_protocol.c line=771 column=17
m
ask = : pass=0
=
 r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask;
779
780    for : true=0, false=0
f
or (; hi : modules/http/http_protocol.c line=773 column=23
h
i; hi : modules/http/http_protocol.c line=773 column=23
h
= : pass=0
=
 apr_hash_next : enter=0, leave=0

apr_hash_next : /usr/include/apr-1/apr_hash.h line=156 column=33
a
pr_hash_next(hi : modules/http/http_protocol.c line=773 column=23
h
i)) {
781        const void *key;
782        void *val;
783
784        apr_hash_this : enter=0, leave=0

apr_hash_this : /usr/include/apr-1/apr_hash.h line=167 column=19
a
pr_hash_this(hi : modules/http/http_protocol.c line=773 column=23
h
i, &key : modules/http/http_protocol.c line=781 column=21
k
ey, NULL, &val : modules/http/http_protocol.c line=782 column=15
v
al);
785        if : true=0, false=0
i
f ((mask : modules/http/http_protocol.c line=771 column=17
m
ask & : pass=0
&
 (AP_METHOD_BIT << : pass=0
<
* dereference : enter=0, leave=0
*
(int *)val : modules/http/http_protocol.c line=782 column=15
v
al)) != : true=0, false=0
!
= 0) {
786            *(const char **)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(allow : modules/http/http_protocol.c line=772 column=25
a
llow) = : enter=0, leave=0
=
 key : modules/http/http_protocol.c line=781 column=21
k
ey;
787
788            /* the M_GET method actually refers to two methods */
789            if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
(int *)val : modules/http/http_protocol.c line=782 column=15
v
al == : true=0, false=0
=
= M_GET)
790                *(const char **)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(allow : modules/http/http_protocol.c line=772 column=25
a
llow) = : enter=0, leave=0
=
 "HEAD";
791        }
792    }
793
794    /* TRACE is tested on a per-server basis */
795    if : true=0, false=0
i
f (conf : modules/http/http_protocol.c line=775 column=25
c
onf-> : enter=0, leave=0
-
>trace_enable : include/http_core.h line=624 column=9
t
race_enable != : true=0, false=0
!
= AP_TRACE_DISABLE)
796        *(const char **)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(allow : modules/http/http_protocol.c line=772 column=25
a
llow) = : enter=0, leave=0
=
 "TRACE";
797
798    list : modules/http/http_protocol.c line=770 column=11
l
ist = : pass=0
=
 apr_array_pstrcat : enter=0, leave=0

apr_array_pstrcat : /usr/include/apr-1/apr_tables.h line=211 column=21
a
pr_array_pstrcat(r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, allow : modules/http/http_protocol.c line=772 column=25
a
llow, ',');
799
800    /* ### this is rather annoying. we should enforce registration of
801       ### these methods */
802    if : true=0, false=0
i
f ((mask : modules/http/http_protocol.c line=771 column=17
m
ask & : pass=0
&
 (AP_METHOD_BIT << : pass=0
<
< M_INVALID))
803        && : true=0, false=0
&
& (r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= NULL)
804        && : true=0, false=0
&
& (r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= 0)) {
805        int i;
806        char **xmethod = (char **) r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
807
808        /*
809         * Append all of the elements of r->allowed_methods->method_list
810         */
811        for : true=0, false=0
f
or (i : modules/http/http_protocol.c line=805 column=13
i
 = : pass=0
=
 0; i : modules/http/http_protocol.c line=805 column=13
i
 < : true=0, false=0
<
 r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+i : modules/http/http_protocol.c line=805 column=13
i
) {
812            list : modules/http/http_protocol.c line=770 column=11
l
ist = : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(r : modules/http/http_protocol.c line=768 column=38
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, list : modules/http/http_protocol.c line=770 column=11
l
ist, ",", xmethod : modules/http/http_protocol.c line=806 column=16
x
method[] : enter=0, leave=0
[
i : modules/http/http_protocol.c line=805 column=13
i
], NULL);
813        }
814    }
815
816    return : pass=0
r
eturn list : modules/http/http_protocol.c line=770 column=11
l
ist;
817}
818
819AP_DECLARE(int) ap_send_http_options : call=0
a
p_send_http_options(request_rec *r)
820{
821    if : true=0, false=0
i
f (r : modules/http/http_protocol.c line=819 column=51
r
-> : enter=0, leave=0
-
>assbackwards : include/httpd.h line=801 column=9
a
ssbackwards) {
822        return : pass=0
r
eturn DECLINED;
823    }
824
825    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/http/http_protocol.c line=819 column=51
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Allow", make_allow : enter=0, leave=0

make_allow : modules/http/http_protocol.c line=768 column=14
m
ake_allow(r : modules/http/http_protocol.c line=819 column=51
r
));
826
827    /* the request finalization will send an EOS, which will flush all
828     * the headers out (including the Allow header)
829     */
830
831    return : pass=0
r
eturn OK;
832}
833
834AP_DECLARE(void) ap_set_content_type : call=0
a
p_set_content_type(request_rec *r, const char *ct)
835{
836    if : true=0, false=0
i
f (! : true=0, false=0
!
ct : modules/http/http_protocol.c line=834 column=66
c
t) {
837        r : modules/http/http_protocol.c line=834 column=51
r
-> : enter=0, leave=0
-
>content_type : include/httpd.h line=917 column=17
c
ontent_type = : enter=0, leave=0
=
 NULL;
838    }
839    else if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : modules/http/http_protocol.c line=834 column=51
r
-> : enter=0, leave=0
-
>content_type : include/httpd.h line=917 column=17
c
ontent_type || : true=0, false=0
|
MC/DC independently affect : true=0, false=0
strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
sTF
trcmp(r : modules/http/http_protocol.c line=834 column=51
r
-> : enter=0, leave=0
-
>content_type : include/httpd.h line=917 column=17
c
ontent_type, ct : modules/http/http_protocol.c line=834 column=66
c
t)) {
840        r : modules/http/http_protocol.c line=834 column=51
r
-> : enter=0, leave=0
-
>content_type : include/httpd.h line=917 column=17
c
ontent_type = : enter=0, leave=0
=
 ct : modules/http/http_protocol.c line=834 column=66
c
t;
841
842        /* Insert filters requested by the AddOutputFiltersByType
843         * configuration directive. Content-type filters must be
844         * inserted after the content handlers have run because
845         * only then, do we reliably know the content-type.
846         */
847        ap_add_output_filters_by_type : enter=0, leave=0

ap_add_output_filters_by_type : include/http_core.h line=633 column=6
a
p_add_output_filters_by_type(r : modules/http/http_protocol.c line=834 column=51
r
);
848    }
849}
850
851AP_DECLARE(void) ap_set_accept_ranges : call=0
a
p_set_accept_ranges(request_rec *r)
852{
853    core_dir_config *d = ap_get_module_config(r : modules/http/http_protocol.c line=851 column=52
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config, &core_module : include/http_core.h line=345 column=31
c
ore_module);
854    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/http/http_protocol.c line=851 column=52
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Accept-Ranges",
855                  (d : modules/http/http_protocol.c line=853 column=22
d
-> : enter=0, leave=0
-
>max_ranges : include/http_core.h line=588 column=9
m
ax_ranges == : true=0, false=0
=
= AP_MAXRANGES_NORANGES) conditional operator : true=0, false=0
?
 "none"
856                                                           : "bytes");
857}
858static const char *add_optional_notes : call=0
a
dd_optional_notes(request_rec *r,
859                                      const char *prefix,
860                                      const char *key,
861                                      const char *suffix)
862{
863    const char *notes, *result;
864
865    if : true=0, false=0
i
f ((notes : modules/http/http_protocol.c line=863 column=17
n
otes = : 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/http/http_protocol.c line=858 column=52
r
-> : enter=0, leave=0
-
>notes : include/httpd.h line=910 column=18
n
otes, key : modules/http/http_protocol.c line=860 column=51
k
ey)) == : true=0, false=0
=
= NULL) {
866        result : modules/http/http_protocol.c line=863 column=25
r
esult = : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(r : modules/http/http_protocol.c line=858 column=52
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, prefix : modules/http/http_protocol.c line=859 column=51
p
refix, suffix : modules/http/http_protocol.c line=861 column=51
s
uffix, NULL);
867    }
868    else {
869        result : modules/http/http_protocol.c line=863 column=25
r
esult = : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(r : modules/http/http_protocol.c line=858 column=52
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, prefix : modules/http/http_protocol.c line=859 column=51
p
refix, notes : modules/http/http_protocol.c line=863 column=17
n
otes, suffix : modules/http/http_protocol.c line=861 column=51
s
uffix, NULL);
870    }
871
872    return : pass=0
r
eturn result : modules/http/http_protocol.c line=863 column=25
r
esult;
873}
874
875/* construct and return the default error message for a given
876 * HTTP defined error code
877 */
878static const char *get_canned_error_string : call=0
g
et_canned_error_string(int status,
879                                           request_rec *r,
880                                           const char *location)
881{
882    apr_pool_t *p = r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool;
883    const char *error_notes, *h1, *s1;
884
885    switch : pass=0
s
witch (status : modules/http/http_protocol.c line=878 column=48
s
tatus) {
886    case : true=0, false=0
c
ase HTTP_MOVED_PERMANENTLY:
887    case : true=0, false=0
c
ase HTTP_MOVED_TEMPORARILY:
888    case : true=0, false=0
c
ase HTTP_TEMPORARY_REDIRECT:
889        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
890                           "<p>The document has moved <a href=\"",
891                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, location : modules/http/http_protocol.c line=880 column=56
l
ocation),
892                           "\">here</a>.</p>\n",
893                           NULL));
894    case : true=0, false=0
c
ase HTTP_SEE_OTHER:
895        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
896                           "<p>The answer to your request is located "
897                           "<a href=\"",
898                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, location : modules/http/http_protocol.c line=880 column=56
l
ocation),
899                           "\">here</a>.</p>\n",
900                           NULL));
901    case : true=0, false=0
c
ase HTTP_USE_PROXY:
902        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
903                           "<p>This resource is only accessible "
904                           "through the proxy\n",
905                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, location : modules/http/http_protocol.c line=880 column=56
l
ocation),
906                           "<br />\nYou will need to configure "
907                           "your client to use that proxy.</p>\n",
908                           NULL));
909    case : true=0, false=0
c
ase HTTP_PROXY_AUTHENTICATION_REQUIRED:
910    case : true=0, false=0
c
ase HTTP_UNAUTHORIZED:
911        return : pass=0
r
eturn("<p>This server could not verify that you\n"
912               "are authorized to access the document\n"
913               "requested.  Either you supplied the wrong\n"
914               "credentials (e.g., bad password), or your\n"
915               "browser doesn't understand how to supply\n"
916               "the credentials required.</p>\n");
917    case : true=0, false=0
c
ase HTTP_BAD_REQUEST:
918        return : pass=0
r
eturn(add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
,
919                                  "<p>Your browser sent a request that "
920                                  "this server could not understand.<br />\n",
921                                  "error-notes",
922                                  "</p>\n"));
923    case : true=0, false=0
c
ase HTTP_FORBIDDEN:
924        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
925                           "<p>You don't have permission to access ",
926                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
927                           "\non this server.</p>\n",
928                           NULL));
929    case : true=0, false=0
c
ase HTTP_NOT_FOUND:
930        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
931                           "<p>The requested URL ",
932                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
933                           " was not found on this server.</p>\n",
934                           NULL));
935    case : true=0, false=0
c
ase HTTP_METHOD_NOT_ALLOWED:
936        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
937                           "<p>The requested method ",
938                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>method : include/httpd.h line=829 column=17
m
ethod),
939                           " is not allowed for the URL ",
940                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
941                           ".</p>\n",
942                           NULL));
943    case : true=0, false=0
c
ase HTTP_NOT_ACCEPTABLE:
944        s1 : modules/http/http_protocol.c line=883 column=36
s
= : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
945                         "<p>An appropriate representation of the "
946                         "requested resource ",
947                         ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
948                         " could not be found on this server.</p>\n",
949                         NULL);
950        return : pass=0
r
eturn(add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
s1 : modules/http/http_protocol.c line=883 column=36
s
1, "variant-list", ""));
951    case : true=0, false=0
c
ase HTTP_MULTIPLE_CHOICES:
952        return : pass=0
r
eturn(add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
, "", "variant-list", ""));
953    case : true=0, false=0
c
ase HTTP_LENGTH_REQUIRED:
954        s1 : modules/http/http_protocol.c line=883 column=36
s
= : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
955                         "<p>A request of the requested method ",
956                         ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>method : include/httpd.h line=829 column=17
m
ethod),
957                         " requires a valid Content-length.<br />\n",
958                         NULL);
959        return : pass=0
r
eturn(add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
s1 : modules/http/http_protocol.c line=883 column=36
s
1, "error-notes", "</p>\n"));
960    case : true=0, false=0
c
ase HTTP_PRECONDITION_FAILED:
961        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
962                           "<p>The precondition on the request "
963                           "for the URL ",
964                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
965                           " evaluated to false.</p>\n",
966                           NULL));
967    case : true=0, false=0
c
ase HTTP_NOT_IMPLEMENTED:
968        s1 : modules/http/http_protocol.c line=883 column=36
s
= : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
969                         "<p>",
970                         ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>method : include/httpd.h line=829 column=17
m
ethod), " to ",
971                         ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
972                         " not supported.<br />\n",
973                         NULL);
974        return : pass=0
r
eturn(add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
s1 : modules/http/http_protocol.c line=883 column=36
s
1, "error-notes", "</p>\n"));
975    case : true=0, false=0
c
ase HTTP_BAD_GATEWAY:
976        s1 : modules/http/http_protocol.c line=883 column=36
s
= : pass=0
=
 "<p>The proxy server received an invalid" CRLF
977            "response from an upstream server.<br />" CRLF;
978        return : pass=0
r
eturn(add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
s1 : modules/http/http_protocol.c line=883 column=36
s
1, "error-notes", "</p>\n"));
979    case : true=0, false=0
c
ase HTTP_VARIANT_ALSO_VARIES:
980        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
981                           "<p>A variant for the requested "
982                           "resource\n<pre>\n",
983                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
984                           "\n</pre>\nis itself a negotiable resource. "
985                           "This indicates a configuration error.</p>\n",
986                           NULL));
987    case : true=0, false=0
c
ase HTTP_REQUEST_TIME_OUT:
988        return : pass=0
r
eturn("<p>Server timeout waiting for the HTTP request from the client.</p>\n");
989    case : true=0, false=0
c
ase HTTP_GONE:
990        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
991                           "<p>The requested resource<br />",
992                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri),
993                           "<br />\nis no longer available on this server "
994                           "and there is no forwarding address.\n"
995                           "Please remove all references to this "
996                           "resource.</p>\n",
997                           NULL));
998    case : true=0, false=0
c
ase HTTP_REQUEST_ENTITY_TOO_LARGE:
999        return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
1000                           "The requested resource<br />",
1001                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri), "<br />\n",
1002                           "does not allow request data with ",
1003                           ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>method : include/httpd.h line=829 column=17
m
ethod),
1004                           " requests, or the amount of data provided in\n"
1005                           "the request exceeds the capacity limit.\n",
1006                           NULL));
1007    case : true=0, false=0
c
ase HTTP_REQUEST_URI_TOO_LARGE:
1008        s1 : modules/http/http_protocol.c line=883 column=36
s
= : pass=0
=
 "<p>The requested URL's length exceeds the capacity\n"
1009             "limit for this server.<br />\n";
1010        return : pass=0
r
eturn(add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
s1 : modules/http/http_protocol.c line=883 column=36
s
1, "error-notes", "</p>\n"));
1011    case : true=0, false=0
c
ase HTTP_UNSUPPORTED_MEDIA_TYPE:
1012        return : pass=0
r
eturn("<p>The supplied request data is not in a format\n"
1013               "acceptable for processing by this resource.</p>\n");
1014    case : true=0, false=0
c
ase HTTP_RANGE_NOT_SATISFIABLE:
1015        return : pass=0
r
eturn("<p>None of the range-specifier values in the Range\n"
1016               "request-header field overlap the current extent\n"
1017               "of the selected resource.</p>\n");
1018    case : true=0, false=0
c
ase HTTP_EXPECTATION_FAILED:
1019        s1 : modules/http/http_protocol.c line=883 column=36
s
= : 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/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in, "Expect");
1020        if : true=0, false=0
i
f (s1 : modules/http/http_protocol.c line=883 column=36
s
1)
1021            s1 : modules/http/http_protocol.c line=883 column=36
s
= : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
1022                     "<p>The expectation given in the Expect request-header\n"
1023                     "field could not be met by this server.\n"
1024                     "The client sent<pre>\n    Expect: ",
1025                     ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, s1 : modules/http/http_protocol.c line=883 column=36
s
1), "\n</pre>\n",
1026                     NULL);
1027        else
1028            s1 : modules/http/http_protocol.c line=883 column=36
s
= : pass=0
=
 "<p>No expectation was seen, the Expect request-header \n"
1029                 "field was not presented by the client.\n";
1030        return : pass=0
r
eturn add_optional_notes : enter=0, leave=0

add_optional_notes : modules/http/http_protocol.c line=858 column=20
a
dd_optional_notes(r : modules/http/http_protocol.c line=879 column=57
r
s1 : modules/http/http_protocol.c line=883 column=36
s
1, "error-notes", "</p>"
1031                   "<p>Only the 100-continue expectation is supported.</p>\n");
1032    case : true=0, false=0
c
ase HTTP_UNPROCESSABLE_ENTITY:
1033        return : pass=0
r
eturn("<p>The server understands the media type of the\n"
1034               "request entity, but was unable to process the\n"
1035               "contained instructions.</p>\n");
1036    case : true=0, false=0
c
ase HTTP_LOCKED:
1037        return : pass=0
r
eturn("<p>The requested resource is currently locked.\n"
1038               "The lock must be released or proper identification\n"
1039               "given before the method can be applied.</p>\n");
1040    case : true=0, false=0
c
ase HTTP_FAILED_DEPENDENCY:
1041        return : pass=0
r
eturn("<p>The method could not be performed on the resource\n"
1042               "because the requested action depended on another\n"
1043               "action and that other action failed.</p>\n");
1044    case : true=0, false=0
c
ase HTTP_UPGRADE_REQUIRED:
1045        return : pass=0
r
eturn("<p>The requested resource can only be retrieved\n"
1046               "using SSL.  The server is willing to upgrade the current\n"
1047               "connection to SSL, but your client doesn't support it.\n"
1048               "Either upgrade your client, or try requesting the page\n"
1049               "using https://\n");
1050    case : true=0, false=0
c
ase HTTP_INSUFFICIENT_STORAGE:
1051        return : pass=0
r
eturn("<p>The method could not be performed on the resource\n"
1052               "because the server is unable to store the\n"
1053               "representation needed to successfully complete the\n"
1054               "request.  There is insufficient free space left in\n"
1055               "your storage allocation.</p>\n");
1056    case : true=0, false=0
c
ase HTTP_SERVICE_UNAVAILABLE:
1057        return : pass=0
r
eturn("<p>The server is temporarily unable to service your\n"
1058               "request due to maintenance downtime or capacity\n"
1059               "problems. Please try again later.</p>\n");
1060    case : true=0, false=0
c
ase HTTP_GATEWAY_TIME_OUT:
1061        return : pass=0
r
eturn("<p>The gateway did not receive a timely response\n"
1062               "from the upstream server or application.</p>\n");
1063    case : true=0, false=0
c
ase HTTP_NOT_EXTENDED:
1064        return : pass=0
r
eturn("<p>A mandatory extension policy in the request is not\n"
1065               "accepted by the server for this resource.</p>\n");
1066    default : true=0, false=0
d
efault:                    /* HTTP_INTERNAL_SERVER_ERROR */
1067        /*
1068         * This comparison to expose error-notes could be modified to
1069         * use a configuration directive and export based on that
1070         * directive.  For now "*" is used to designate an error-notes
1071         * that is totally safe for any user to see (ie lacks paths,
1072         * database passwords, etc.)
1073         */
1074        if : true=0, false=0
i
f (((error_notes : modules/http/http_protocol.c line=883 column=17
e
rror_notes = : 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/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>notes : include/httpd.h line=910 column=18
n
otes,
1075                                          "error-notes")) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= NULL)
1076            && : true=0, false=0
&
& (h1 : modules/http/http_protocol.c line=883 column=31
h
= : 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/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>notes : include/httpd.h line=910 column=18
n
otes, "verbose-error-to")) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= NULL
1077            && : true=0, false=0
&
& (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(h1 : modules/http/http_protocol.c line=883 column=31
h
1, "*") == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0)) {
1078            return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
error_notes : modules/http/http_protocol.c line=883 column=17
e
rror_notes, "<p />\n", NULL));
1079        }
1080        else {
1081            return : pass=0
r
eturn(apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : modules/http/http_protocol.c line=882 column=17
p
,
1082                               "<p>The server encountered an internal "
1083                               "error or\n"
1084                               "misconfiguration and was unable to complete\n"
1085                               "your request.</p>\n"
1086                               "<p>Please contact the server "
1087                               "administrator,\n ",
1088                               ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1089                                              r : modules/http/http_protocol.c line=879 column=57
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>server_admin : include/httpd.h line=1186 column=11
s
erver_admin),
1090                               " and inform them of the time the "
1091                               "error occurred,\n"
1092                               "and anything you might have done that "
1093                               "may have\n"
1094                               "caused the error.</p>\n"
1095                               "<p>More information about this error "
1096                               "may be available\n"
1097                               "in the server error log.</p>\n",
1098                               NULL));
1099        }
1100        /*
1101         * It would be nice to give the user the information they need to
1102         * fix the problem directly since many users don't have access to
1103         * the error_log (think University sites) even though they can easily
1104         * get this error by misconfiguring an htaccess file.  However, the
1105         * e error notes tend to include the real file pathname in this case,
1106         * which some people consider to be a breach of privacy.  Until we
1107         * can figure out a way to remove the pathname, leave this commented.
1108         *
1109         * if ((error_notes = apr_table_get(r->notes,
1110         *                                  "error-notes")) != NULL) {
1111         *     return(apr_pstrcat(p, error_notes, "<p />\n", NULL);
1112         * }
1113         * else {
1114         *     return "";
1115         * }
1116         */
1117    }
1118}
1119
1120/* We should have named this send_canned_response, since it is used for any
1121 * response that can be generated by the server from the request record.
1122 * This includes all 204 (no content), 3xx (redirect), 4xx (client error),
1123 * and 5xx (server error) messages that have not been redirected to another
1124 * handler via the ErrorDocument feature.
1125 */
1126AP_DECLARE(void) ap_send_error_response : call=0
a
p_send_error_response(request_rec *r, int recursive_error)
1127{
1128    int status = r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus;
1129    int idx = ap_index_of_response : enter=0, leave=0

ap_index_of_response : modules/http/http_protocol.c line=735 column=17
a
p_index_of_response(status : modules/http/http_protocol.c line=1128 column=9
s
tatus);
1130    char *custom_response;
1131    const char *location = 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/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Location");
1132
1133    /* At this point, we are starting the response over, so we have to reset
1134     * this value.
1135     */
1136    r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>eos_sent : include/httpd.h line=1002 column=9
e
os_sent = : enter=0, leave=0
=
 0;
1137
1138    /* and we need to get rid of any RESOURCE filters that might be lurking
1139     * around, thinking they are in the middle of the original request
1140     */
1141
1142    r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>output_filters : include/httpd.h line=990 column=25
o
utput_filters = : enter=0, leave=0
=
 r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>proto_output_filters : include/httpd.h line=996 column=25
p
roto_output_filters;
1143
1144    ap_run_insert_error_filter : enter=0, leave=0

ap_run_insert_error_filter : modules/http/ line=61 column=1
a
p_run_insert_error_filter(r : modules/http/http_protocol.c line=1126 column=54
r
);
1145
1146    /*
1147     * It's possible that the Location field might be in r->err_headers_out
1148     * instead of r->headers_out; use the latter if possible, else the
1149     * former.
1150     */
1151    if : true=0, false=0
i
f (location : modules/http/http_protocol.c line=1131 column=17
l
ocation == : true=0, false=0
=
= NULL) {
1152        location : modules/http/http_protocol.c line=1131 column=17
l
ocation = : 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/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out, "Location");
1153    }
1154    /* We need to special-case the handling of 204 and 304 responses,
1155     * since they have specific HTTP requirements and do not include a
1156     * message body.  Note that being assbackwards here is not an option.
1157     */
1158    if : true=0, false=0
i
f (status : modules/http/http_protocol.c line=1128 column=9
s
tatus == : true=0, false=0
=
= HTTP_NOT_MODIFIED) {
1159        ap_finalize_request_protocol : enter=0, leave=0

ap_finalize_request_protocol : include/http_protocol.h line=86 column=18
a
p_finalize_request_protocol(r : modules/http/http_protocol.c line=1126 column=54
r
);
1160        return : pass=0
r
eturn;
1161    }
1162
1163    if : true=0, false=0
i
f (status : modules/http/http_protocol.c line=1128 column=9
s
tatus == : true=0, false=0
=
= HTTP_NO_CONTENT) {
1164        ap_finalize_request_protocol : enter=0, leave=0

ap_finalize_request_protocol : include/http_protocol.h line=86 column=18
a
p_finalize_request_protocol(r : modules/http/http_protocol.c line=1126 column=54
r
);
1165        return : pass=0
r
eturn;
1166    }
1167
1168    if : true=0, false=0
i
f (! : true=0, false=0
!
r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>assbackwards : include/httpd.h line=801 column=9
a
ssbackwards) {
1169        apr_table_t *tmp = r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out;
1170
1171        /* For all HTTP/1.x responses for which we generate the message,
1172         * we need to avoid inheriting the "normal status" header fields
1173         * that may have been set by the request handler before the
1174         * error or redirect, except for Location on external redirects.
1175         */
1176        r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out = : enter=0, leave=0
=
 r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out;
1177        r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out = : enter=0, leave=0
=
 tmp : modules/http/http_protocol.c line=1169 column=22
t
mp;
1178        apr_table_clear : enter=0, leave=0

apr_table_clear : /usr/include/apr-1/apr_tables.h line=249 column=19
a
pr_table_clear(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out);
1179
1180        if : true=0, false=0
i
f (ap_is_HTTP_REDIRECT(status : modules/http/http_protocol.c line=1128 column=9
s
tatus) || : true=0, false=0
|
| (status : modules/http/http_protocol.c line=1128 column=9
s
tatus == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= HTTP_CREATED)) {
1181            if : true=0, false=0
i
f ((location : modules/http/http_protocol.c line=1131 column=17
l
ocation != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= NULL) && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
location : modules/http/http_protocol.c line=1131 column=17
l
ocation) {
1182                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/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Location", location : modules/http/http_protocol.c line=1131 column=17
l
ocation);
1183            }
1184            else {
1185                location : modules/http/http_protocol.c line=1131 column=17
l
ocation = : pass=0
=
 "";   /* avoids coredump when printing, below */
1186            }
1187        }
1188
1189        r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>content_languages : include/httpd.h line=924 column=25
c
ontent_languages = : enter=0, leave=0
=
 NULL;
1190        r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>content_encoding : include/httpd.h line=922 column=17
c
ontent_encoding = : enter=0, leave=0
=
 NULL;
1191        r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>clength : include/httpd.h line=873 column=15
c
length = : enter=0, leave=0
=
 0;
1192
1193        if : true=0, false=0
i
f (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/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env,
1194                          "suppress-error-charset") != : true=0, false=0
!
= NULL) {
1195            core_request_config *request_conf =
1196                        ap_get_module_config(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>request_config : include/httpd.h line=979 column=30
r
equest_config, &core_module : include/http_core.h line=345 column=31
c
ore_module);
1197            request_conf : modules/http/http_protocol.c line=1195 column=34
r
equest_conf-> : enter=0, leave=0
-
>suppress_charset : include/http_core.h line=380 column=9
s
uppress_charset = : enter=0, leave=0
=
 1; /* avoid adding default
1198                                                 * charset later
1199                                                 */
1200            ap_set_content_type : enter=0, leave=0

ap_set_content_type : modules/http/http_protocol.c line=834 column=18
a
p_set_content_type(r : modules/http/http_protocol.c line=1126 column=54
r
, "text/html");
1201        }
1202        else {
1203            ap_set_content_type : enter=0, leave=0

ap_set_content_type : modules/http/http_protocol.c line=834 column=18
a
p_set_content_type(r : modules/http/http_protocol.c line=1126 column=54
r
, "text/html; charset=iso-8859-1");
1204        }
1205
1206        if : true=0, false=0
i
f ((status : modules/http/http_protocol.c line=1128 column=9
s
tatus == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= HTTP_METHOD_NOT_ALLOWED)
1207            || : true=0, false=0
|
| (status : modules/http/http_protocol.c line=1128 column=9
s
tatus == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= HTTP_NOT_IMPLEMENTED)) {
1208            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/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, "Allow", make_allow : enter=0, leave=0

make_allow : modules/http/http_protocol.c line=768 column=14
m
ake_allow(r : modules/http/http_protocol.c line=1126 column=54
r
));
1209        }
1210
1211        if : true=0, false=0
i
f (r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>header_only : include/httpd.h line=808 column=9
h
eader_only) {
1212            ap_finalize_request_protocol : enter=0, leave=0

ap_finalize_request_protocol : include/http_protocol.h line=86 column=18
a
p_finalize_request_protocol(r : modules/http/http_protocol.c line=1126 column=54
r
);
1213            return : pass=0
r
eturn;
1214        }
1215    }
1216
1217    if : true=0, false=0
i
f ((custom_response : modules/http/http_protocol.c line=1130 column=11
c
ustom_response = : pass=0
=
 ap_response_code_string : enter=0, leave=0

ap_response_code_string : modules/http/mod_core.h line=62 column=7
a
p_response_code_string(r : modules/http/http_protocol.c line=1126 column=54
r
idx : modules/http/http_protocol.c line=1129 column=9
i
dx))) {
1218        /*
1219         * We have a custom response output. This should only be
1220         * a text-string to write back. But if the ErrorDocument
1221         * was a local redirect and the requested resource failed
1222         * for any reason, the custom_response will still hold the
1223         * redirect URL. We don't really want to output this URL
1224         * as a text message, so first check the custom response
1225         * string to ensure that it is a text-string (using the
1226         * same test used in ap_die(), i.e. does it start with a ").
1227         *
1228         * If it's not a text string, we've got a recursive error or
1229         * an external redirect.  If it's a recursive error, ap_die passes
1230         * us the second error code so we can write both, and has already
1231         * backed up to the original error.  If it's an external redirect,
1232         * it hasn't happened yet; we may never know if it fails.
1233         */
1234        if : true=0, false=0
i
f (custom_response : modules/http/http_protocol.c line=1130 column=11
c
ustom_response[] : enter=0, leave=0
[
0] == : true=0, false=0
=
= '\"') {
1235            ap_rputs : enter=0, leave=0

ap_rputs : include/http_protocol.h line=337 column=17
a
p_rputs(custom_response : modules/http/http_protocol.c line=1130 column=11
c
ustom_response + : pass=0
+
 1, r : modules/http/http_protocol.c line=1126 column=54
r
);
1236            ap_finalize_request_protocol : enter=0, leave=0

ap_finalize_request_protocol : include/http_protocol.h line=86 column=18
a
p_finalize_request_protocol(r : modules/http/http_protocol.c line=1126 column=54
r
);
1237            return : pass=0
r
eturn;
1238        }
1239    }
1240    {
1241        const char *title = status_lines : modules/http/http_protocol.c line=75 column=27
s
tatus_lines[] : enter=0, leave=0
[
idx : modules/http/http_protocol.c line=1129 column=9
i
dx];
1242        const char *h1;
1243
1244        /* Accept a status_line set by a module, but only if it begins
1245         * with the 3 digit status code
1246         */
1247        if : true=0, false=0
i
f (r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= NULL
1248            && : true=0, false=0
&
strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line) > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 4       /* long enough */
1249            && : true=0, false=0
&
& apr_isdigit(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line[] : enter=0, leave=0
[
0])
1250            && : true=0, false=0
&
& apr_isdigit(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line[] : enter=0, leave=0
[
1])
1251            && : true=0, false=0
&
& apr_isdigit(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line[] : enter=0, leave=0
[
2])
1252            && : true=0, false=0
&
& apr_isspace(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line[] : enter=0, leave=0
[
3])
1253            && : true=0, false=0
&
& apr_isalnum(r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line[] : enter=0, leave=0
[
4])) {
1254            title : modules/http/http_protocol.c line=1241 column=21
t
itle = : pass=0
=
 r : modules/http/http_protocol.c line=1126 column=54
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line;
1255        }
1256
1257        /* folks decided they didn't want the error code in the H1 text */
1258        h1 : modules/http/http_protocol.c line=1242 column=21
h
= : pass=0
=
 &title : modules/http/http_protocol.c line=1241 column=21
t
itle[] : enter=0, leave=0
[
4];
1259
1260        /* can't count on a charset filter being in place here,
1261         * so do ebcdic->ascii translation explicitly (if needed)
1262         */
1263
1264        ap_rvputs_proto_in_ascii(r : modules/http/http_protocol.c line=1126 column=54
r
,
1265                  DOCTYPE_HTML_2_0
1266                  "<html><head>\n<title>", title : modules/http/http_protocol.c line=1241 column=21
t
itle,
1267                  "</title>\n</head><body>\n<h1>", h1 : modules/http/http_protocol.c line=1242 column=21
h
1, "</h1>\n",
1268                  NULL);
1269
1270        ap_rvputs_proto_in_ascii(r : modules/http/http_protocol.c line=1126 column=54
r
,
1271                                 get_canned_error_string : enter=0, leave=0

get_canned_error_string : modules/http/http_protocol.c line=878 column=20
g
et_canned_error_string(status : modules/http/http_protocol.c line=1128 column=9
s
tatus, r : modules/http/http_protocol.c line=1126 column=54
r
location : modules/http/http_protocol.c line=1131 column=17
l
ocation),
1272                                 NULL);
1273
1274        if : true=0, false=0
i
f (recursive_error : modules/http/http_protocol.c line=1126 column=61
r
ecursive_error) {
1275            ap_rvputs_proto_in_ascii(r : modules/http/http_protocol.c line=1126 column=54
r
, "<p>Additionally, a ",
1276                      status_lines : modules/http/http_protocol.c line=75 column=27
s
tatus_lines[] : enter=0, leave=0
[
ap_index_of_response : enter=0, leave=0

ap_index_of_response : modules/http/http_protocol.c line=735 column=17
a
p_index_of_response(recursive_error : modules/http/http_protocol.c line=1126 column=61
r
ecursive_error)],
1277                      "\nerror was encountered while trying to use an "
1278                      "ErrorDocument to handle the request.</p>\n", NULL);
1279        }
1280        ap_rvputs_proto_in_ascii(r : modules/http/http_protocol.c line=1126 column=54
r
ap_psignature : enter=0, leave=0

ap_psignature : include/httpd.h line=1893 column=26
a
p_psignature("<hr>\n", r : modules/http/http_protocol.c line=1126 column=54
r
), NULL);
1281        ap_rvputs_proto_in_ascii(r : modules/http/http_protocol.c line=1126 column=54
r
, "</body></html>\n", NULL);
1282    }
1283    ap_finalize_request_protocol : enter=0, leave=0

ap_finalize_request_protocol : include/http_protocol.h line=86 column=18
a
p_finalize_request_protocol(r : modules/http/http_protocol.c line=1126 column=54
r
);
1284}
1285
1286/*
1287 * Create a new method list with the specified number of preallocated
1288 * extension slots.
1289 */
1290AP_DECLARE(ap_method_list_t *) ap_make_method_list : call=0
a
p_make_method_list(apr_pool_t *p, int nelts)
1291{
1292    ap_method_list_t *ml;
1293
1294    ml : modules/http/http_protocol.c line=1292 column=23
m
= : pass=0
=
 (ap_method_list_t *) apr_palloc : enter=0, leave=0

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(p : modules/http/http_protocol.c line=1290 column=64
p
, sizeof(ap_method_list_t));
1295    ml : modules/http/http_protocol.c line=1292 column=23
m
l-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask = : enter=0, leave=0
=
 0;
1296    ml : modules/http/http_protocol.c line=1292 column=23
m
l-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list = : enter=0, leave=0
=
 apr_array_make : enter=0, leave=0

apr_array_make : /usr/include/apr-1/apr_tables.h line=111 column=35
a
pr_array_make(p : modules/http/http_protocol.c line=1290 column=64
p
nelts : modules/http/http_protocol.c line=1290 column=71
n
elts, sizeof(char *));
1297    return : pass=0
r
eturn ml : modules/http/http_protocol.c line=1292 column=23
m
l;
1298}
1299
1300/*
1301 * Make a copy of a method list (primarily for subrequests that may
1302 * subsequently change it; don't want them changing the parent's, too!).
1303 */
1304AP_DECLARE(void) ap_copy_method_list : call=0
a
p_copy_method_list(ap_method_list_t *dest,
1305                                     ap_method_list_t *src)
1306{
1307    int i;
1308    char **imethods;
1309    char **omethods;
1310
1311    dest : modules/http/http_protocol.c line=1304 column=56
d
est-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask = : enter=0, leave=0
=
 src : modules/http/http_protocol.c line=1305 column=56
s
rc-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask;
1312    imethods : modules/http/http_protocol.c line=1308 column=12
i
methods = : pass=0
=
 (char **) src : modules/http/http_protocol.c line=1305 column=56
s
rc-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1313    for : true=0, false=0
f
or (i : modules/http/http_protocol.c line=1307 column=9
i
 = : pass=0
=
 0; i : modules/http/http_protocol.c line=1307 column=9
i
 < : true=0, false=0
<
 src : modules/http/http_protocol.c line=1305 column=56
s
rc-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+i : modules/http/http_protocol.c line=1307 column=9
i
) {
1314        omethods : modules/http/http_protocol.c line=1309 column=12
o
methods = : pass=0
=
 (char **) apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(dest : modules/http/http_protocol.c line=1304 column=56
d
est-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list);
1315        *omethods : modules/http/http_protocol.c line=1309 column=12
o
methods = : enter=0, leave=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(dest : modules/http/http_protocol.c line=1304 column=56
d
est-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>pool : /usr/include/apr-1/apr_tables.h line=54 column=17 pool, imethods : modules/http/http_protocol.c line=1308 column=12
i
methods[] : enter=0, leave=0
[
i : modules/http/http_protocol.c line=1307 column=9
i
]);
1316    }
1317}
1318
1319/*
1320 * Return true if the specified HTTP method is in the provided
1321 * method list.
1322 */
1323AP_DECLARE(int) ap_method_in_list : call=0
a
p_method_in_list(ap_method_list_t *l, const char *method)
1324{
1325    int methnum;
1326    int i;
1327    char **methods;
1328
1329    /*
1330     * If it's one of our known methods, use the shortcut and check the
1331     * bitmask.
1332     */
1333    methnum : modules/http/http_protocol.c line=1325 column=9
m
ethnum = : pass=0
=
 ap_method_number_of : enter=0, leave=0

ap_method_number_of : modules/http/http_protocol.c line=687 column=17
a
p_method_number_of(method : modules/http/http_protocol.c line=1323 column=68
m
ethod);
1334    if : true=0, false=0
i
f (methnum : modules/http/http_protocol.c line=1325 column=9
m
ethnum != : true=0, false=0
!
= M_INVALID) {
1335        return : pass=0
r
eturn ! : true=0, false=0
!
! : true=0, false=0
!
(l : modules/http/http_protocol.c line=1323 column=53
l
-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask & : pass=0
&
 (AP_METHOD_BIT << : pass=0
<
methnum : modules/http/http_protocol.c line=1325 column=9
m
ethnum));
1336    }
1337    /*
1338     * Otherwise, see if the method name is in the array or string names
1339     */
1340    if : true=0, false=0
i
f ((l : modules/http/http_protocol.c line=1323 column=53
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= NULL) || : true=0, false=0
|
| (l : modules/http/http_protocol.c line=1323 column=53
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0)) {
1341        return : pass=0
r
eturn 0;
1342    }
1343    methods : modules/http/http_protocol.c line=1327 column=12
m
ethods = : pass=0
=
 (char **)l : modules/http/http_protocol.c line=1323 column=53
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1344    for : true=0, false=0
f
or (i : modules/http/http_protocol.c line=1326 column=9
i
 = : pass=0
=
 0; i : modules/http/http_protocol.c line=1326 column=9
i
 < : true=0, false=0
<
 l : modules/http/http_protocol.c line=1323 column=53
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+i : modules/http/http_protocol.c line=1326 column=9
i
) {
1345        if : true=0, false=0
i
f (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(method : modules/http/http_protocol.c line=1323 column=68
m
ethod, methods : modules/http/http_protocol.c line=1327 column=12
m
ethods[] : enter=0, leave=0
[
i : modules/http/http_protocol.c line=1326 column=9
i
]) == : true=0, false=0
=
= 0) {
1346            return : pass=0
r
eturn 1;
1347        }
1348    }
1349    return : pass=0
r
eturn 0;
1350}
1351
1352/*
1353 * Add the specified method to a method list (if it isn't already there).
1354 */
1355AP_DECLARE(void) ap_method_list_add : call=0
a
p_method_list_add(ap_method_list_t *l, const char *method)
1356{
1357    int methnum;
1358    int i;
1359    const char **xmethod;
1360    char **methods;
1361
1362    /*
1363     * If it's one of our known methods, use the shortcut and use the
1364     * bitmask.
1365     */
1366    methnum : modules/http/http_protocol.c line=1357 column=9
m
ethnum = : pass=0
=
 ap_method_number_of : enter=0, leave=0

ap_method_number_of : modules/http/http_protocol.c line=687 column=17
a
p_method_number_of(method : modules/http/http_protocol.c line=1355 column=70
m
ethod);
1367    l : modules/http/http_protocol.c line=1355 column=55
l
-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask |= : enter=0, leave=0
|
= (AP_METHOD_BIT << : pass=0
<
methnum : modules/http/http_protocol.c line=1357 column=9
m
ethnum);
1368    if : true=0, false=0
i
f (methnum : modules/http/http_protocol.c line=1357 column=9
m
ethnum != : true=0, false=0
!
= M_INVALID) {
1369        return : pass=0
r
eturn;
1370    }
1371    /*
1372     * Otherwise, see if the method name is in the array of string names.
1373     */
1374    if : true=0, false=0
i
f (l : modules/http/http_protocol.c line=1355 column=55
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts != : true=0, false=0
!
= 0) {
1375        methods : modules/http/http_protocol.c line=1360 column=12
m
ethods = : pass=0
=
 (char **)l : modules/http/http_protocol.c line=1355 column=55
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1376        for : true=0, false=0
f
or (i : modules/http/http_protocol.c line=1358 column=9
i
 = : pass=0
=
 0; i : modules/http/http_protocol.c line=1358 column=9
i
 < : true=0, false=0
<
 l : modules/http/http_protocol.c line=1355 column=55
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+i : modules/http/http_protocol.c line=1358 column=9
i
) {
1377            if : true=0, false=0
i
f (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(method : modules/http/http_protocol.c line=1355 column=70
m
ethod, methods : modules/http/http_protocol.c line=1360 column=12
m
ethods[] : enter=0, leave=0
[
i : modules/http/http_protocol.c line=1358 column=9
i
]) == : true=0, false=0
=
= 0) {
1378                return : pass=0
r
eturn;
1379            }
1380        }
1381    }
1382    xmethod : modules/http/http_protocol.c line=1359 column=18
x
method = : pass=0
=
 (const char **) apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(l : modules/http/http_protocol.c line=1355 column=55
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list);
1383    *xmethod : modules/http/http_protocol.c line=1359 column=18
x
method = : enter=0, leave=0
=
 method : modules/http/http_protocol.c line=1355 column=70
m
ethod;
1384}
1385
1386/*
1387 * Remove the specified method from a method list.
1388 */
1389AP_DECLARE(void) ap_method_list_remove : call=0
a
p_method_list_remove(ap_method_list_t *l,
1390                                       const char *method)
1391{
1392    int methnum;
1393    char **methods;
1394
1395    /*
1396     * If it's a known methods, either builtin or registered
1397     * by a module, use the bitmask.
1398     */
1399    methnum : modules/http/http_protocol.c line=1392 column=9
m
ethnum = : pass=0
=
 ap_method_number_of : enter=0, leave=0

ap_method_number_of : modules/http/http_protocol.c line=687 column=17
a
p_method_number_of(method : modules/http/http_protocol.c line=1390 column=52
m
ethod);
1400    l : modules/http/http_protocol.c line=1389 column=58
l
-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask |= : enter=0, leave=0
|
~ : pass=0
~
(AP_METHOD_BIT << : pass=0
<
methnum : modules/http/http_protocol.c line=1392 column=9
m
ethnum);
1401    if : true=0, false=0
i
f (methnum : modules/http/http_protocol.c line=1392 column=9
m
ethnum != : true=0, false=0
!
= M_INVALID) {
1402        return : pass=0
r
eturn;
1403    }
1404    /*
1405     * Otherwise, see if the method name is in the array of string names.
1406     */
1407    if : true=0, false=0
i
f (l : modules/http/http_protocol.c line=1389 column=58
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts != : true=0, false=0
!
= 0) {
1408        register int i, j, k;
1409        methods : modules/http/http_protocol.c line=1393 column=12
m
ethods = : pass=0
=
 (char **)l : modules/http/http_protocol.c line=1389 column=58
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1410        for : true=0, false=0
f
or (i : modules/http/http_protocol.c line=1408 column=22
i
 = : pass=0
=
 0; i : modules/http/http_protocol.c line=1408 column=22
i
 < : true=0, false=0
<
 l : modules/http/http_protocol.c line=1389 column=58
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ) {
1411            if : true=0, false=0
i
f (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(method : modules/http/http_protocol.c line=1390 column=52
m
ethod, methods : modules/http/http_protocol.c line=1393 column=12
m
ethods[] : enter=0, leave=0
[
i : modules/http/http_protocol.c line=1408 column=22
i
]) == : true=0, false=0
=
= 0) {
1412                for : true=0, false=0
f
or (j : modules/http/http_protocol.c line=1408 column=25
j
 = : pass=0
=
 i : modules/http/http_protocol.c line=1408 column=22
i
k : modules/http/http_protocol.c line=1408 column=28
k
 = : pass=0
=
 i : modules/http/http_protocol.c line=1408 column=22
i
 + : pass=0
+
 1; k : modules/http/http_protocol.c line=1408 column=28
k
 < : true=0, false=0
<
 l : modules/http/http_protocol.c line=1389 column=58
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+j : modules/http/http_protocol.c line=1408 column=25
j
++ : pass=0
+
+k : modules/http/http_protocol.c line=1408 column=28
k
) {
1413                    methods : modules/http/http_protocol.c line=1393 column=12
m
ethods[j : modules/http/http_protocol.c line=1408 column=25
j
= : enter=0, leave=0
=
 methods : modules/http/http_protocol.c line=1393 column=12
m
ethods[] : enter=0, leave=0
[
k : modules/http/http_protocol.c line=1408 column=28
k
];
1414                }
1415                -- : pass=0
-
-l : modules/http/http_protocol.c line=1389 column=58
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts;
1416            }
1417            else {
1418                ++ : pass=0
+
+i : modules/http/http_protocol.c line=1408 column=22
i
;
1419            }
1420        }
1421    }
1422}
1423
1424/*
1425 * Reset a method list to be completely empty.
1426 */
1427AP_DECLARE(void) ap_clear_method_list : call=0
a
p_clear_method_list(ap_method_list_t *l)
1428{
1429    l : modules/http/http_protocol.c line=1427 column=57
l
-> : enter=0, leave=0
-
>method_mask : include/httpd.h line=633 column=17
m
ethod_mask = : enter=0, leave=0
=
 0;
1430    l : modules/http/http_protocol.c line=1427 column=57
l
-> : enter=0, leave=0
-
>method_list : include/httpd.h line=635 column=25
m
ethod_list-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts = : enter=0, leave=0
=
 0;
1431}
1432
1433[EOF]


Generated by expcov