MCPcopy Create free account
hub / github.com/apache/trafficserver / setHeader

Function setHeader

plugins/prefetch/headers.cc:135–174  ·  view source on GitHub ↗

* @brief Set a header to a specific value. * * This will avoid going to through a remove / add sequence in case of an existing header but clean. * * @param bufp request's buffer * @param hdrLoc request's header location * @param header header name * @param headerlen header name len * @param value the new value * @param valuelen length of the value * @return true - OK, false - failed */

Source from the content-addressed store, hash-verified

133 * @return true - OK, false - failed
134 */
135bool
136setHeader(TSMBuffer bufp, TSMLoc hdrLoc, const char *header, int headerlen, const char *value, int valuelen)
137{
138 if (!bufp || !hdrLoc || !header || headerlen <= 0 || !value || valuelen <= 0) {
139 return false;
140 }
141
142 bool ret = false;
143 TSMLoc fieldLoc = TSMimeHdrFieldFind(bufp, hdrLoc, header, headerlen);
144
145 if (!fieldLoc) {
146 // No existing header, so create one
147 if (TS_SUCCESS == TSMimeHdrFieldCreateNamed(bufp, hdrLoc, header, headerlen, &fieldLoc)) {
148 if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdrLoc, fieldLoc, -1, value, valuelen)) {
149 TSMimeHdrFieldAppend(bufp, hdrLoc, fieldLoc);
150 ret = true;
151 }
152 TSHandleMLocRelease(bufp, hdrLoc, fieldLoc);
153 }
154 } else {
155 TSMLoc tmp = nullptr;
156 bool first = true;
157
158 while (fieldLoc) {
159 tmp = TSMimeHdrFieldNextDup(bufp, hdrLoc, fieldLoc);
160 if (first) {
161 first = false;
162 if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdrLoc, fieldLoc, -1, value, valuelen)) {
163 ret = true;
164 }
165 } else {
166 TSMimeHdrFieldDestroy(bufp, hdrLoc, fieldLoc);
167 }
168 TSHandleMLocRelease(bufp, hdrLoc, fieldLoc);
169 fieldLoc = tmp;
170 }
171 }
172
173 return ret;
174}
175
176/**
177 * @brief Dump a header on stderr

Callers 2

contHandleFetchFunction · 0.70
initMethod · 0.70

Calls 7

TSMimeHdrFieldFindFunction · 0.85
TSMimeHdrFieldAppendFunction · 0.85
TSHandleMLocReleaseFunction · 0.85
TSMimeHdrFieldNextDupFunction · 0.85
TSMimeHdrFieldDestroyFunction · 0.85

Tested by

no test coverage detected