From 5e9d29121cbd98fb4ec6dac4341b20667e7a5036 Mon Sep 17 00:00:00 2001 From: Leif Hedstrom Date: Thu, 16 Jan 2020 16:17:38 -0700 Subject: [PATCH 1/2] XDebug: Always append to the X- header, rather than prepend --- plugins/xdebug/xdebug.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/xdebug/xdebug.cc b/plugins/xdebug/xdebug.cc index 3493575b136..d9361c005b5 100644 --- a/plugins/xdebug/xdebug.cc +++ b/plugins/xdebug/xdebug.cc @@ -160,7 +160,7 @@ InjectCacheKeyHeader(TSHttpTxn txn, TSMBuffer buffer, TSMLoc hdr) } // Now copy the cache lookup URL into the response header. - TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, 0 /* idx */, strval.ptr, strval.len) == TS_SUCCESS); + TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, -1 /* idx */, strval.ptr, strval.len) == TS_SUCCESS); done: if (dst != TS_NULL_MLOC) { @@ -197,11 +197,11 @@ InjectCacheHeader(TSHttpTxn txn, TSMBuffer buffer, TSMLoc hdr) if (TSHttpTxnCacheLookupStatusGet(txn, &status) == TS_ERROR) { // If the cache lookup hasn't happened yes, TSHttpTxnCacheLookupStatusGet will fail. - TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, 0 /* idx */, "none", 4) == TS_SUCCESS); + TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, -1 /* idx */, "none", 4) == TS_SUCCESS); } else { const char *msg = (status < 0 || status >= static_cast(countof(names))) ? "unknown" : names[status]; - TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, 0 /* idx */, msg, -1) == TS_SUCCESS); + TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, -1 /* idx */, msg, -1) == TS_SUCCESS); } done: @@ -272,7 +272,7 @@ InjectMilestonesHeader(TSHttpTxn txn, TSMBuffer buffer, TSMLoc hdr) double elapsed = static_cast(time - epoch) / 1000000000.0; int len = snprintf(hdrval, sizeof(hdrval), "%s=%1.9lf", milestones[i].msname, elapsed); - TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, 0 /* idx */, hdrval, len) == TS_SUCCESS); + TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, -1 /* idx */, hdrval, len) == TS_SUCCESS); } } @@ -334,7 +334,7 @@ InjectRemapHeader(TSHttpTxn txn, TSMBuffer buffer, TSMLoc hdr) TSfree(const_cast(toUrlStr)); } - TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, 0 /* idx */, buf, len) == TS_SUCCESS); + TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, -1 /* idx */, buf, len) == TS_SUCCESS); TSHandleMLocRelease(buffer, hdr, dst); } } @@ -349,7 +349,7 @@ InjectTxnUuidHeader(TSHttpTxn txn, TSMBuffer buffer, TSMLoc hdr) TSUuid uuid = TSProcessUuidGet(); int len = snprintf(buf, sizeof(buf), "%s-%" PRIu64 "", TSUuidStringGet(uuid), TSHttpTxnIdGet(txn)); - TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, 0 /* idx */, buf, len) == TS_SUCCESS); + TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, -1 /* idx */, buf, len) == TS_SUCCESS); TSHandleMLocRelease(buffer, hdr, dst); } } @@ -387,7 +387,7 @@ InjectParentSelectionKeyHeader(TSHttpTxn txn, TSMBuffer buffer, TSMLoc hdr) } // Now copy the parent selection lookup URL into the response header. - TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, 0 /* idx */, strval.ptr, strval.len) == TS_SUCCESS); + TSReleaseAssert(TSMimeHdrFieldValueStringInsert(buffer, hdr, dst, -1 /* idx */, strval.ptr, strval.len) == TS_SUCCESS); done: if (dst != TS_NULL_MLOC) { From d9339c0d2e54bb858ab85512936a404f0d71273c Mon Sep 17 00:00:00 2001 From: Leif Hedstrom Date: Tue, 10 Mar 2020 13:48:33 -0600 Subject: [PATCH 2/2] Updated the docs as well --- doc/admin-guide/plugins/xdebug.en.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/admin-guide/plugins/xdebug.en.rst b/doc/admin-guide/plugins/xdebug.en.rst index d0230761196..126028d873d 100644 --- a/doc/admin-guide/plugins/xdebug.en.rst +++ b/doc/admin-guide/plugins/xdebug.en.rst @@ -90,9 +90,9 @@ X-Cache skipped The cache lookup was skipped. ========== =========== - If a request goes through multiple proxies, each one prepends its X-Cache header content - at the beginning of the existing X-Cache header. As a result, the order is reversed from - the Via: header. + If a request goes through multiple proxies, each one appends its X-Cache header content + the end of the existing X-Cache header. This is the same order as for the + ``Via`` header. X-Cache-Generation The cache generation ID for this transaction, as specified by the