MCPcopy Create free account
hub / github.com/apache/httpd / h2_request_add_header

Function h2_request_add_header

modules/http2/h2_request.c:137–196  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

135}
136
137apr_status_t h2_request_add_header(h2_request *req, apr_pool_t *pool,
138 const char *name, size_t nlen,
139 const char *value, size_t vlen,
140 struct h2_hd_scratch *scratch,
141 int *pwas_added)
142{
143 apr_status_t status = APR_SUCCESS;
144
145 *pwas_added = 0;
146 if (nlen <= 0) {
147 return status;
148 }
149
150 if (name[0] == ':') {
151 /* pseudo header, see ch. 8.1.2.3, always should come first */
152 if (!apr_is_empty_table(req->headers)) {
153 ap_log_perror(APLOG_MARK, APLOG_ERR, 0, pool,
154 APLOGNO(02917)
155 "h2_request: pseudo header after request start");
156 return APR_EGENERAL;
157 }
158
159 if (H2_HEADER_METHOD_LEN == nlen
160 && !strncmp(H2_HEADER_METHOD, name, nlen)) {
161 req->method = apr_pstrndup(pool, value, vlen);
162 }
163 else if (H2_HEADER_SCHEME_LEN == nlen
164 && !strncmp(H2_HEADER_SCHEME, name, nlen)) {
165 req->scheme = apr_pstrndup(pool, value, vlen);
166 }
167 else if (H2_HEADER_PATH_LEN == nlen
168 && !strncmp(H2_HEADER_PATH, name, nlen)) {
169 req->path = apr_pstrndup(pool, value, vlen);
170 }
171 else if (H2_HEADER_AUTH_LEN == nlen
172 && !strncmp(H2_HEADER_AUTH, name, nlen)) {
173 req->authority = apr_pstrndup(pool, value, vlen);
174 }
175 else if (H2_HEADER_PROTO_LEN == nlen
176 && !strncmp(H2_HEADER_PROTO, name, nlen)) {
177 req->protocol = apr_pstrndup(pool, value, vlen);
178 }
179 else {
180 char buffer[32];
181 memset(buffer, 0, 32);
182 strncpy(buffer, name, (nlen > 31)? 31 : nlen);
183 ap_log_perror(APLOG_MARK, APLOG_WARNING, 0, pool,
184 APLOGNO(02954)
185 "h2_request: ignoring unknown pseudo header %s",
186 buffer);
187 }
188 }
189 else {
190 /* non-pseudo header, add to table */
191 status = h2_req_add_header(req->headers, pool, name, nlen, value, vlen,
192 scratch, pwas_added);
193 }
194

Callers 1

h2_stream_add_headerFunction · 0.85

Calls 1

h2_req_add_headerFunction · 0.85

Tested by

no test coverage detected