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

Function TSRemapDoRemap

example/plugins/c-api/remap/remap.cc:214–317  ·  view source on GitHub ↗

-------------------------- TSRemapDoRemap -------------------------------- */

Source from the content-addressed store, hash-verified

212
213/* -------------------------- TSRemapDoRemap -------------------------------- */
214TSRemapStatus
215TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo *rri)
216{
217 const char *temp;
218 const char *temp2;
219 int len, len2, port;
220 TSMLoc cfield;
221 uint64_t _processing_counter = processing_counter++;
222
223 remap_entry *ri = static_cast<remap_entry *>(ih);
224 Dbg(dbg_ctl, "enter");
225
226 if (!ri || !rri) {
227 return TSREMAP_NO_REMAP; /* TS must remap this request */
228 }
229
230 Dbg(dbg_ctl, "From: \"%s\" To: \"%s\"\n", ri->argv[0], ri->argv[1]);
231
232 temp = TSUrlHostGet(rri->requestBufp, rri->requestUrl, &len);
233 Dbg(dbg_ctl, "Request Host(%d): \"%.*s\"\n", len, len, temp);
234
235 temp = TSUrlHostGet(rri->requestBufp, rri->mapToUrl, &len);
236 Dbg(dbg_ctl, "Remap To Host: \"%.*s\"\n", len, temp);
237
238 temp = TSUrlHostGet(rri->requestBufp, rri->mapFromUrl, &len);
239 Dbg(dbg_ctl, "Remap From Host: \"%.*s\"\n", len, temp);
240
241 Dbg(dbg_ctl, "Request Port: %d\n", TSUrlPortGet(rri->requestBufp, rri->requestUrl));
242 Dbg(dbg_ctl, "Remap From Port: %d\n", TSUrlPortGet(rri->requestBufp, rri->mapFromUrl));
243 Dbg(dbg_ctl, "Remap To Port: %d\n", TSUrlPortGet(rri->requestBufp, rri->mapToUrl));
244
245 temp = TSUrlPathGet(rri->requestBufp, rri->requestUrl, &len);
246 Dbg(dbg_ctl, "Request Path: \"%.*s\"\n", len, temp);
247
248 temp = TSUrlPathGet(rri->requestBufp, rri->mapFromUrl, &len);
249 Dbg(dbg_ctl, "Remap From Path: \"%.*s\"\n", len, temp);
250
251 temp = TSUrlPathGet(rri->requestBufp, rri->mapToUrl, &len);
252 Dbg(dbg_ctl, "Remap To Path: \"%.*s\"\n", len, temp);
253
254 // InkAPI usage case
255 const char *value;
256
257 if ((cfield = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp, TS_MIME_FIELD_DATE, -1)) != TS_NULL_MLOC) {
258 Dbg(dbg_ctl, "We have \"Date\" header in request\n");
259 value = TSMimeHdrFieldValueStringGet(rri->requestBufp, rri->requestHdrp, cfield, -1, nullptr);
260 Dbg(dbg_ctl, "Header value: %s\n", value);
261 }
262 if ((cfield = TSMimeHdrFieldFind(rri->requestBufp, rri->requestHdrp, "MyHeader", sizeof("MyHeader") - 1)) != TS_NULL_MLOC) {
263 Dbg(dbg_ctl, "We have \"MyHeader\" header in request\n");
264 value = TSMimeHdrFieldValueStringGet(rri->requestBufp, rri->requestHdrp, cfield, -1, nullptr);
265 Dbg(dbg_ctl, "Header value: %s\n", value);
266 }
267
268 // How to store plugin private arguments inside Traffic Server request processing block.
269 if (TSUserArgIndexReserve(TS_USER_ARGS_TXN, "remap_example", "Example remap plugin", &arg_index) == TS_SUCCESS) {
270 Dbg(dbg_ctl, "Save processing counter %" PRIu64 " inside request processing block\n", _processing_counter);
271 TSUserArgSet(rh, arg_index, (void *)_processing_counter); // save counter

Callers

nothing calls this directly

Calls 15

TSUrlHostGetFunction · 0.85
TSUrlPortGetFunction · 0.85
TSUrlPathGetFunction · 0.85
TSMimeHdrFieldFindFunction · 0.85
TSUserArgIndexReserveFunction · 0.85
TSUserArgSetFunction · 0.85
TSmallocFunction · 0.85
TSHttpTxnStatusSetFunction · 0.85
TSHttpTxnErrorBodySetFunction · 0.85
TSUrlPortSetFunction · 0.85
TSUrlHostSetFunction · 0.85

Tested by

no test coverage detected