Don't warn when a connection closes without sending data - #49
Merged
Merged
Conversation
TCP health checks, load balancer probes and port scanners connect to the fmsg port (sometimes completing the TLS handshake) and close without sending anything. Each one logged "WARN: reading header from, <ip>: EOF", which floods the log and buries real warnings. handleConn now counts the bytes it reads, and when the header read fails with EOF or a connection reset before any bytes arrived, it closes the connection without a warning. The existing INFO line still records the connection. A partial or malformed header, a timeout, or any other error still warns as before. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Operators still see who connected and from where, just not as a warning. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
TCP health checks, load balancer probes and port scanners connect to the fmsg port, sometimes complete the TLS handshake, and then close without sending anything. Each of these logged:
With a health check running every minute from several regions, these warnings flood the log and bury real ones.
Change
responseTrackingConnnow also counts the bytes read from the connection.readHeaderfails before any bytes arrived, and the error isio.EOFor a connection reset,handleConnlogs it at INFO (INFO: <addr> closed the connection without sending data) instead of as a warning, so operators still see who connected and from where.Tests
cmd/fmsgd/empty_conn_test.go, run against a real TLS listener:closedWithoutData: EOF or reset before any data counts as a silent close. EOF after some data, a timeout, or other errors don't.With the check disabled, the two probe tests fail, so the tests do catch the old behaviour.
go vet ./...andgo test ./...pass.🤖 Generated with Claude Code