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

Function set_header

plugins/background_fetch/headers.cc:54–93  ·  view source on GitHub ↗

////////////////////////////////////////////////////////////////////// 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.

Source from the content-addressed store, hash-verified

52// remove / add sequence in case of an existing header.
53// but clean.
54bool
55set_header(TSMBuffer bufp, TSMLoc hdr_loc, const char *header, int len, const char *val, int val_len)
56{
57 if (!bufp || !hdr_loc || !header || len <= 0 || !val || val_len <= 0) {
58 return false;
59 }
60
61 bool ret = false;
62 TSMLoc field_loc = TSMimeHdrFieldFind(bufp, hdr_loc, header, len);
63
64 if (!field_loc) {
65 // No existing header, so create one
66 if (TS_SUCCESS == TSMimeHdrFieldCreateNamed(bufp, hdr_loc, header, len, &field_loc)) {
67 if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdr_loc, field_loc, -1, val, val_len)) {
68 TSMimeHdrFieldAppend(bufp, hdr_loc, field_loc);
69 ret = true;
70 }
71 TSHandleMLocRelease(bufp, hdr_loc, field_loc);
72 }
73 } else {
74 TSMLoc tmp = nullptr;
75 bool first = true;
76
77 while (field_loc) {
78 tmp = TSMimeHdrFieldNextDup(bufp, hdr_loc, field_loc);
79 if (first) {
80 first = false;
81 if (TS_SUCCESS == TSMimeHdrFieldValueStringSet(bufp, hdr_loc, field_loc, -1, val, val_len)) {
82 ret = true;
83 }
84 } else {
85 TSMimeHdrFieldDestroy(bufp, hdr_loc, field_loc);
86 }
87 TSHandleMLocRelease(bufp, hdr_loc, field_loc);
88 field_loc = tmp;
89 }
90 }
91
92 return ret;
93}
94
95///////////////////////////////////////////////////////////////////////////
96// Dump a header on stderr, useful together with Dbg().

Callers 4

initializeMethod · 0.70
authorizeAwsV4Method · 0.50
authorizeAwsV2Method · 0.50
authorizeGcpMethod · 0.50

Calls 7

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

Tested by

no test coverage detected