From f5748386b8207ef57ea186d122372edfc67d6f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Helge=20He=C3=9F?= Date: Tue, 8 Oct 2024 18:27:16 +0200 Subject: [PATCH] Only trace ECONNRESET errors ... less noise, only happens outside of transactions. --- Sources/http/Server/Server.swift | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/Sources/http/Server/Server.swift b/Sources/http/Server/Server.swift index e266bd1..843911f 100644 --- a/Sources/http/Server/Server.swift +++ b/Sources/http/Server/Server.swift @@ -3,14 +3,20 @@ // Macro // // Created by Helge Hess. -// Copyright © 2020-2022 ZeeZide GmbH. All rights reserved. +// Copyright © 2020-2024 ZeeZide GmbH. All rights reserved. // +#if os(Linux) + import let Glibc.ECONNRESET +#else + import let Darwin.ECONNRESET +#endif import class MacroCore.ErrorEmitter import enum MacroCore.EventListenerSet import class MacroCore.MacroCore import struct MacroCore.Buffer import struct Logging.Logger +import struct NIOCore.IOError import struct NIO.NIOAny import class NIO.EventLoopFuture import class NIO.ServerBootstrap @@ -538,12 +544,24 @@ open class Server: ErrorEmitter, CustomStringConvertible { // HTTPParserError.invalidEOFState server.log.error("HTTP error in TX \(id), closing connection: \(error)") server.emitError(error, transaction: ( request, response )) + self.transaction = nil } else { - server.log.error("HTTP error, closing connection: \(error)") + assert(transaction == nil) + var doError = true + + if let error = error as? IOError, error.errnoCode == ECONNRESET { + doError = false + } + + if doError { + server.log.error("HTTP error, closing connection: \(error)") + } + else { + server.log.trace("HTTP error, closing connection: \(error)") + } server.emitError(error, transaction: nil) } - self.transaction = nil context.close(promise: nil) } }