Repository: trafficserver Updated Branches: refs/heads/master 00ce2f111 -> 2f85ef59a
TS-3842: Add stats for HTTP/2 errors Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/2f85ef59 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/2f85ef59 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/2f85ef59 Branch: refs/heads/master Commit: 2f85ef59a04040808682f4c634a2b0cb7a718089 Parents: 00ce2f1 Author: Bryan Call <[email protected]> Authored: Fri Aug 14 20:16:12 2015 -0700 Committer: Bryan Call <[email protected]> Committed: Fri Aug 14 20:16:12 2015 -0700 ---------------------------------------------------------------------- ats/ats.xcodeproj/project.pbxproj | 244 +++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/ats.xccheckout | 53 ++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 29266 bytes .../bcall.xcuserdatad/xcschemes/ats.xcscheme | 88 +++++++ .../xcschemes/xcschememanagement.plist | 22 ++ ats/ats/main.cpp | 15 ++ proxy/hdrs/MIME.cc | 22 +- proxy/http2/HTTP2.cc | 6 + proxy/http2/HTTP2.h | 2 + proxy/http2/Http2ConnectionState.cc | 3 + 11 files changed, 452 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/ats/ats.xcodeproj/project.pbxproj ---------------------------------------------------------------------- diff --git a/ats/ats.xcodeproj/project.pbxproj b/ats/ats.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1516cf1 --- /dev/null +++ b/ats/ats.xcodeproj/project.pbxproj @@ -0,0 +1,244 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 74C536DD1B6E458900C65A85 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 74C536DC1B6E458900C65A85 /* main.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 74C536D71B6E458900C65A85 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 74C536D91B6E458900C65A85 /* ats */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ats; sourceTree = BUILT_PRODUCTS_DIR; }; + 74C536DC1B6E458900C65A85 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; }; + 74C536E31B6E45BC00C65A85 /* trafficserver */ = {isa = PBXFileReference; lastKnownFileType = folder; name = trafficserver; path = ../..; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 74C536D61B6E458900C65A85 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 74C536D01B6E458900C65A85 = { + isa = PBXGroup; + children = ( + 74C536DB1B6E458900C65A85 /* ats */, + 74C536DA1B6E458900C65A85 /* Products */, + ); + sourceTree = "<group>"; + }; + 74C536DA1B6E458900C65A85 /* Products */ = { + isa = PBXGroup; + children = ( + 74C536D91B6E458900C65A85 /* ats */, + ); + name = Products; + sourceTree = "<group>"; + }; + 74C536DB1B6E458900C65A85 /* ats */ = { + isa = PBXGroup; + children = ( + 74C536E31B6E45BC00C65A85 /* trafficserver */, + 74C536DC1B6E458900C65A85 /* main.cpp */, + ); + path = ats; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 74C536D81B6E458900C65A85 /* ats */ = { + isa = PBXNativeTarget; + buildConfigurationList = 74C536E01B6E458900C65A85 /* Build configuration list for PBXNativeTarget "ats" */; + buildPhases = ( + 74C536D51B6E458900C65A85 /* Sources */, + 74C536D61B6E458900C65A85 /* Frameworks */, + 74C536D71B6E458900C65A85 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ats; + productName = ats; + productReference = 74C536D91B6E458900C65A85 /* ats */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 74C536D11B6E458900C65A85 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0640; + ORGANIZATIONNAME = "Bryan Call"; + TargetAttributes = { + 74C536D81B6E458900C65A85 = { + CreatedOnToolsVersion = 6.4; + }; + }; + }; + buildConfigurationList = 74C536D41B6E458900C65A85 /* Build configuration list for PBXProject "ats" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 74C536D01B6E458900C65A85; + productRefGroup = 74C536DA1B6E458900C65A85 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 74C536D81B6E458900C65A85 /* ats */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 74C536D51B6E458900C65A85 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74C536DD1B6E458900C65A85 /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 74C536DE1B6E458900C65A85 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 74C536DF1B6E458900C65A85 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 74C536E11B6E458900C65A85 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 74C536E21B6E458900C65A85 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 74C536D41B6E458900C65A85 /* Build configuration list for PBXProject "ats" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 74C536DE1B6E458900C65A85 /* Debug */, + 74C536DF1B6E458900C65A85 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 74C536E01B6E458900C65A85 /* Build configuration list for PBXNativeTarget "ats" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 74C536E11B6E458900C65A85 /* Debug */, + 74C536E21B6E458900C65A85 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 74C536D11B6E458900C65A85 /* Project object */; +} http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/ats/ats.xcodeproj/project.xcworkspace/contents.xcworkspacedata ---------------------------------------------------------------------- diff --git a/ats/ats.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ats/ats.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3952209 --- /dev/null +++ b/ats/ats.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "self:ats.xcodeproj"> + </FileRef> +</Workspace> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/ats/ats.xcodeproj/project.xcworkspace/xcshareddata/ats.xccheckout ---------------------------------------------------------------------- diff --git a/ats/ats.xcodeproj/project.xcworkspace/xcshareddata/ats.xccheckout b/ats/ats.xcodeproj/project.xcworkspace/xcshareddata/ats.xccheckout new file mode 100644 index 0000000..4260163 --- /dev/null +++ b/ats/ats.xcodeproj/project.xcworkspace/xcshareddata/ats.xccheckout @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDESourceControlProjectFavoriteDictionaryKey</key> + <false/> + <key>IDESourceControlProjectIdentifier</key> + <string>B68CA0F6-AD93-4309-BBD8-779D486EAF4A</string> + <key>IDESourceControlProjectName</key> + <string>project</string> + <key>IDESourceControlProjectOriginsDictionary</key> + <dict> + <key>3E7D1886603C574E8845ED8ED00B8A794ACD099B</key> + <string>https://git-wip-us.apache.org/repos/asf/trafficserver.git</string> + <key>881E4EC6C76B99CCF6EB3C199FC5E78E972258CC</key> + <string>http://luajit.org/git/luajit-2.0.git</string> + </dict> + <key>IDESourceControlProjectPath</key> + <string>ats/ats.xcodeproj/project.xcworkspace</string> + <key>IDESourceControlProjectRelativeInstallPathDictionary</key> + <dict> + <key>3E7D1886603C574E8845ED8ED00B8A794ACD099B</key> + <string>../../..</string> + <key>881E4EC6C76B99CCF6EB3C199FC5E78E972258CC</key> + <string>../../..lib/luajit/</string> + </dict> + <key>IDESourceControlProjectURL</key> + <string>https://git-wip-us.apache.org/repos/asf/trafficserver.git</string> + <key>IDESourceControlProjectVersion</key> + <integer>111</integer> + <key>IDESourceControlProjectWCCIdentifier</key> + <string>3E7D1886603C574E8845ED8ED00B8A794ACD099B</string> + <key>IDESourceControlProjectWCConfigurations</key> + <array> + <dict> + <key>IDESourceControlRepositoryExtensionIdentifierKey</key> + <string>public.vcs.git</string> + <key>IDESourceControlWCCIdentifierKey</key> + <string>881E4EC6C76B99CCF6EB3C199FC5E78E972258CC</string> + <key>IDESourceControlWCCName</key> + <string>luajit</string> + </dict> + <dict> + <key>IDESourceControlRepositoryExtensionIdentifierKey</key> + <string>public.vcs.git</string> + <key>IDESourceControlWCCIdentifierKey</key> + <string>3E7D1886603C574E8845ED8ED00B8A794ACD099B</string> + <key>IDESourceControlWCCName</key> + <string>trafficserver</string> + </dict> + </array> +</dict> +</plist> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/ats/ats.xcodeproj/project.xcworkspace/xcuserdata/bcall.xcuserdatad/UserInterfaceState.xcuserstate ---------------------------------------------------------------------- diff --git a/ats/ats.xcodeproj/project.xcworkspace/xcuserdata/bcall.xcuserdatad/UserInterfaceState.xcuserstate b/ats/ats.xcodeproj/project.xcworkspace/xcuserdata/bcall.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..d0bccbd Binary files /dev/null and b/ats/ats.xcodeproj/project.xcworkspace/xcuserdata/bcall.xcuserdatad/UserInterfaceState.xcuserstate differ http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/ats.xcscheme ---------------------------------------------------------------------- diff --git a/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/ats.xcscheme b/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/ats.xcscheme new file mode 100644 index 0000000..6980010 --- /dev/null +++ b/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/ats.xcscheme @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "0640" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "74C536D81B6E458900C65A85" + BuildableName = "ats" + BlueprintName = "ats" + ReferencedContainer = "container:ats.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES" + buildConfiguration = "Debug"> + <Testables> + </Testables> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "74C536D81B6E458900C65A85" + BuildableName = "ats" + BlueprintName = "ats" + ReferencedContainer = "container:ats.xcodeproj"> + </BuildableReference> + </MacroExpansion> + </TestAction> + <LaunchAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Debug" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "74C536D81B6E458900C65A85" + BuildableName = "ats" + BlueprintName = "ats" + ReferencedContainer = "container:ats.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Release" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "74C536D81B6E458900C65A85" + BuildableName = "ats" + BlueprintName = "ats" + ReferencedContainer = "container:ats.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/xcschememanagement.plist ---------------------------------------------------------------------- diff --git a/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/xcschememanagement.plist b/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..78f2e2c --- /dev/null +++ b/ats/ats.xcodeproj/xcuserdata/bcall.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>SchemeUserState</key> + <dict> + <key>ats.xcscheme</key> + <dict> + <key>orderHint</key> + <integer>0</integer> + </dict> + </dict> + <key>SuppressBuildableAutocreation</key> + <dict> + <key>74C536D81B6E458900C65A85</key> + <dict> + <key>primary</key> + <true/> + </dict> + </dict> +</dict> +</plist> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/ats/ats/main.cpp ---------------------------------------------------------------------- diff --git a/ats/ats/main.cpp b/ats/ats/main.cpp new file mode 100644 index 0000000..540591a --- /dev/null +++ b/ats/ats/main.cpp @@ -0,0 +1,15 @@ +// +// main.cpp +// ats +// +// Created by Bryan Call on 8/2/15. +// Copyright (c) 2015 Bryan Call. All rights reserved. +// + +#include <iostream> + +int main(int argc, const char * argv[]) { + // insert code here... + std::cout << "Hello, World!\n"; + return 0; +} http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/proxy/hdrs/MIME.cc ---------------------------------------------------------------------- diff --git a/proxy/hdrs/MIME.cc b/proxy/hdrs/MIME.cc index 2907d35..58204e8 100644 --- a/proxy/hdrs/MIME.cc +++ b/proxy/hdrs/MIME.cc @@ -1554,28 +1554,30 @@ mime_hdr_field_detach(MIMEHdrImpl *mh, MIMEField *field, bool detach_all_dups) // to walk the list to find the previous dup in the list to patch out // the dup being detached. - if (field->m_flags & MIME_FIELD_SLOT_FLAGS_DUP_HEAD) // head of list? - { - if (!next_dup) // only child - { + if (field->m_flags & MIME_FIELD_SLOT_FLAGS_DUP_HEAD) { + // head of list + if (!next_dup) { + // only child mime_hdr_unset_accelerators_and_presence_bits(mh, field); - } else // next guy is dup head - { + } else { + // next guy is dup head next_dup->m_flags |= MIME_FIELD_SLOT_FLAGS_DUP_HEAD; mime_hdr_set_accelerators_and_presence_bits(mh, next_dup); } - } else // need to walk list to find and patch out from predecessor - { + } else { + // need to walk list to find and patch out from predecessor int name_length; const char *name = mime_field_name_get(field, &name_length); MIMEField *prev = mime_hdr_field_find(mh, name, name_length); - while (prev && (prev->m_next_dup != field)) + while (prev && (prev->m_next_dup != field)) { prev = prev->m_next_dup; + } ink_assert(prev != NULL); - if (prev->m_next_dup == field) + if (prev->m_next_dup == field) { prev->m_next_dup = next_dup; + } } // Field is now detached and alone http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/proxy/http2/HTTP2.cc ---------------------------------------------------------------------- diff --git a/proxy/http2/HTTP2.cc b/proxy/http2/HTTP2.cc index d77242c..a8450e2 100644 --- a/proxy/http2/HTTP2.cc +++ b/proxy/http2/HTTP2.cc @@ -38,6 +38,8 @@ static char const *const HTTP2_STAT_CURRENT_CLIENT_STREAM_NAME = "proxy.process. static char const *const HTTP2_STAT_TOTAL_CLIENT_STREAM_NAME = "proxy.process.http2.total_client_streams"; static char const *const HTTP2_STAT_TOTAL_TRANSACTIONS_TIME_NAME = "proxy.process.http2.total_transactions_time"; static char const *const HTTP2_STAT_TOTAL_CLIENT_CONNECTION_NAME = "proxy.process.http2.total_client_connections"; +static char const *const HTTP2_STAT_CONNECTION_ERRORS_NAME = "proxy.process.http2.connection_errors"; +static char const *const HTTP2_STAT_STREAM_ERRORS_NAME = "proxy.process.http2.stream_errors"; union byte_pointer { byte_pointer(void *p) : ptr(p) {} @@ -769,6 +771,10 @@ Http2::init() static_cast<int>(HTTP2_STAT_TOTAL_TRANSACTIONS_TIME), RecRawStatSyncSum); RecRegisterRawStat(http2_rsb, RECT_PROCESS, HTTP2_STAT_TOTAL_CLIENT_CONNECTION_NAME, RECD_INT, RECP_PERSISTENT, static_cast<int>(HTTP2_STAT_TOTAL_CLIENT_CONNECTION_COUNT), RecRawStatSyncSum); + RecRegisterRawStat(http2_rsb, RECT_PROCESS, HTTP2_STAT_CONNECTION_ERRORS_NAME, RECD_INT, RECP_PERSISTENT, + static_cast<int>(HTTP2_STAT_CONNECTION_ERRORS_COUNT), RecRawStatSyncSum); + RecRegisterRawStat(http2_rsb, RECT_PROCESS, HTTP2_STAT_STREAM_ERRORS_NAME, RECD_INT, RECP_PERSISTENT, + static_cast<int>(HTTP2_STAT_STREAM_ERRORS_COUNT), RecRawStatSyncSum); } #if TS_HAS_TESTS http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/proxy/http2/HTTP2.h ---------------------------------------------------------------------- diff --git a/proxy/http2/HTTP2.h b/proxy/http2/HTTP2.h index 29f31fe..a27b6a3 100644 --- a/proxy/http2/HTTP2.h +++ b/proxy/http2/HTTP2.h @@ -68,6 +68,8 @@ enum { HTTP2_STAT_CURRENT_CLIENT_STREAM_COUNT, // Current # of active HTTP2 streams. HTTP2_STAT_TOTAL_TRANSACTIONS_TIME, // Total stream time and streams HTTP2_STAT_TOTAL_CLIENT_CONNECTION_COUNT, // Total connections running http2 + HTTP2_STAT_STREAM_ERRORS_COUNT, + HTTP2_STAT_CONNECTION_ERRORS_COUNT, HTTP2_N_STATS // Terminal counter, NOT A STAT INDEX. }; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/2f85ef59/proxy/http2/Http2ConnectionState.cc ---------------------------------------------------------------------- diff --git a/proxy/http2/Http2ConnectionState.cc b/proxy/http2/Http2ConnectionState.cc index 2e00220..345a0a1 100644 --- a/proxy/http2/Http2ConnectionState.cc +++ b/proxy/http2/Http2ConnectionState.cc @@ -736,7 +736,9 @@ Http2ConnectionState::main_event_handler(int event, void *edata) } if (error.cls != HTTP2_ERROR_CLASS_NONE) { + EThread *ethread = this_ethread(); if (error.cls == HTTP2_ERROR_CLASS_CONNECTION) { + HTTP2_INCREMENT_THREAD_DYN_STAT(HTTP2_STAT_CONNECTION_ERRORS_COUNT, ethread); this->send_goaway_frame(last_streamid, error.code); cleanup_streams(); // XXX We need to think a bit harder about how to coordinate the client @@ -748,6 +750,7 @@ Http2ConnectionState::main_event_handler(int event, void *edata) // half-closed state ... SET_HANDLER(&Http2ConnectionState::state_closed); } else if (error.cls == HTTP2_ERROR_CLASS_STREAM) { + HTTP2_INCREMENT_THREAD_DYN_STAT(HTTP2_STAT_STREAM_ERRORS_COUNT, ethread); this->send_rst_stream_frame(last_streamid, error.code); } }
