Repository: trafficserver Updated Branches: refs/heads/master a70d18875 -> b16c20879
TS-3101: Add TSHttpHdrHostGet Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/b16c2087 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/b16c2087 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/b16c2087 Branch: refs/heads/master Commit: b16c20879c7809fdbff55ac1ee76c1bf7afd29de Parents: a70d188 Author: Alan M. Carroll <[email protected]> Authored: Sun Sep 28 14:31:52 2014 -0500 Committer: Alan M. Carroll <[email protected]> Committed: Sun Sep 28 14:31:52 2014 -0500 ---------------------------------------------------------------------- doc/reference/api/TSHttpHdrHostGet.en.rst | 36 ++++++++++++++++++++++++++ proxy/InkAPI.cc | 13 ++++++++++ proxy/api/ts/ts.h | 1 + 3 files changed, 50 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b16c2087/doc/reference/api/TSHttpHdrHostGet.en.rst ---------------------------------------------------------------------- diff --git a/doc/reference/api/TSHttpHdrHostGet.en.rst b/doc/reference/api/TSHttpHdrHostGet.en.rst new file mode 100644 index 0000000..0498271 --- /dev/null +++ b/doc/reference/api/TSHttpHdrHostGet.en.rst @@ -0,0 +1,36 @@ +.. Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright + ownership. The ASF licenses this file to you under the Apache + License, Version 2.0 (the "License"); you may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + +TSHttpHdrHostGet +================== + +Synopsis +-------- + +`#include <ts/ts.h>` + +.. c:function:: const char* TSHttpHdrHostGet(TSMBuffer bufp, TSMLoc offset, int *length) + + +Description +----------- + +Get the host for the request. :arg:`bufp` and :arg:`offset` must reference an HTTP request header. A pointer to the host +is returned and the length is stored in the ``int`` pointed at by :arg:`length`. Note the returned text may not +be null terminated. The URL in the request is checked first then the ``HOST`` header field. + +..note: This is much faster than calling :c:func:`TSHttpEffectiveUrlStringGet` and extracting the host from the result. http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b16c2087/proxy/InkAPI.cc ---------------------------------------------------------------------- diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc index f7c8927..4054d34 100644 --- a/proxy/InkAPI.cc +++ b/proxy/InkAPI.cc @@ -3767,6 +3767,19 @@ TSHttpHdrMethodSet(TSMBuffer bufp, TSMLoc obj, const char *value, int length) return TS_SUCCESS; } +const char * +TSHttpHdrHostGet(TSMBuffer bufp, TSMLoc obj, int *length) +{ + sdk_assert(sdk_sanity_check_mbuffer(bufp) == TS_SUCCESS); + sdk_assert(sdk_sanity_check_http_hdr_handle(obj) == TS_SUCCESS); + sdk_assert(sdk_sanity_check_null_ptr((void*)length) == TS_SUCCESS); + + HTTPHdr h; + + SET_HTTP_HDR(h, bufp, obj); + return h.host_get(length); +} + TSReturnCode TSHttpHdrUrlGet(TSMBuffer bufp, TSMLoc obj, TSMLoc *locp) { http://git-wip-us.apache.org/repos/asf/trafficserver/blob/b16c2087/proxy/api/ts/ts.h ---------------------------------------------------------------------- diff --git a/proxy/api/ts/ts.h b/proxy/api/ts/ts.h index 50b7c12..3a6eed6 100644 --- a/proxy/api/ts/ts.h +++ b/proxy/api/ts/ts.h @@ -1109,6 +1109,7 @@ extern "C" tsapi const char* TSHttpHdrMethodGet(TSMBuffer bufp, TSMLoc offset, int* length); tsapi TSReturnCode TSHttpHdrMethodSet(TSMBuffer bufp, TSMLoc offset, const char* value, int length); + tsapi const char* TSHttpHdrHostGet(TSMBuffer bufp, TSMLoc offset, int* length); tsapi TSReturnCode TSHttpHdrUrlGet(TSMBuffer bufp, TSMLoc offset, TSMLoc* locp); tsapi TSReturnCode TSHttpHdrUrlSet(TSMBuffer bufp, TSMLoc offset, TSMLoc url);
