[ https://issues.apache.org/jira/browse/TS-2953?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James Peach resolved TS-2953. ----------------------------- Resolution: Not a Problem Seems like this code needs to check the {{Host}} header. > 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 > Components: Core, CPP API, Logging > Affects Versions: 4.2.1 > Reporter: Vasile Bogdan Raica > Labels: API > > 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. > {code} > 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); > } > {code} -- This message was sent by Atlassian JIRA (v6.2#6252)