Vasile Bogdan Raica created TS-2953:
---------------------------------------
Summary: GET Host header in reverse proxy setup
Key: TS-2953
URL: https://issues.apache.org/jira/browse/TS-2953
Project: Traffic Server
Issue Type: Bug
Reporter: Vasile Bogdan Raica
Hello, been trying this for 3 days, I think this is a bug. See bellow code,
this has been tested on TS_HTTP_PRE_REMAP_HOOK and
TS_HTTP_READ_REQUEST_HDR_HOOK. Also the example for blacklist, which uses the
same thing, also fails.
Same goes with getting the URL string, it will remove the hostname and leave
the requested part, eg.
http:///somefile.php
(there are 3 slashes there).
I've been using ATS for about 3 days (yes short time) and trying to make a
plugin for it and I can't seem to get what I want ... I may be missing
something, and if so, I apologize for taking your time to read this and if
possible, kindly show me the right way to do this if possible.
static void
handle_request(TSHttpTxn txnp, TSCont contp) {
TSMBuffer bufp; // TSMBuffer
TSMLoc hdr_loc; // TSMLoc offset
TSMLoc url_loc; // TSMLoc locp
const char *host;
int host_length;
// getting client request
errorCode = TSHttpTxnClientReqGet (txnp, &bufp, &hdr_loc);
if (errorCode != TS_SUCCESS) {
TSError ("couldn't retrieve client request header\n");
goto done;
} else {
TSTextLogObjectWrite(logFile, "Reading client request...");
}
// getting client requested url
errorCode = TSHttpHdrUrlGet (bufp, hdr_loc, &url_loc);
if (errorCode != TS_SUCCESS) {
TSError ("couldn't retrieve request url\n");
TSHandleMLocRelease (bufp, TS_NULL_MLOC, hdr_loc);
goto done;
} else {
TSTextLogObjectWrite(logFile, "Reading url_loc request...");
}
// getting host
host = TSUrlHostGet (bufp, url_loc, &host_length);
TSTextLogObjectWrite(logFile, "Getting host header... %s", host);
if (!host) {
TSError ("couldn't retrieve request host header \n");
TSHandleMLocRelease (bufp, hdr_loc, url_loc);
TSHandleMLocRelease (bufp, TS_NULL_MLOC, hdr_loc);
goto done;
} else {
TSTextLogObjectWrite(logFile, "Getting host header... %s", host);
}
done:
TSTextLogObjectWrite(logFile, "Allowing http event to continue ...");
TSHttpTxnReenable(txnp, TS_EVENT_HTTP_CONTINUE);
}
--
This message was sent by Atlassian JIRA
(v6.2#6252)