Skip to content

Commit

Permalink
Improve error logging when TCP connections are prematurely closed by …
Browse files Browse the repository at this point in the history
…remote server

Signed-off-by: DL6ER <[email protected]>
  • Loading branch information
DL6ER committed May 4, 2024
1 parent af521c9 commit 90b095a
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/dnsmasq_interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -3514,6 +3514,17 @@ void FTL_connection_error(const char *reason, const union mysockaddr *addr)
// Make a private copy of the error
const char *error = strerror(errno);

// Set log priority
int priority = LOG_ERR;

// If this is a TCP connection error and errno == 0, this isn't a
// connection error but the remote side closed the connection
if(errno == 0 && strstr(reason, "TCP(read_write)") != NULL)
{
error = "Connection prematurely closed by remote server";
priority = LOG_INFO;
}

// Format the address into a string (if available)
in_port_t port = 0;
char ip[ADDRSTRLEN + 1] = { 0 };
Expand All @@ -3525,7 +3536,7 @@ void FTL_connection_error(const char *reason, const union mysockaddr *addr)
log_debug(DEBUG_QUERIES, "Connection error (%s#%u, ID %d): %s (%s)", ip, port, id, reason, error);

// Log to pihole.log
my_syslog(LOG_ERR, "%s: %s", reason, error);
my_syslog(priority, "%s: %s", reason, error);

// Add to Pi-hole diagnostics but do not add messages more often than
// once every five seconds to avoid hammering the database with errors
Expand Down

0 comments on commit 90b095a

Please sign in to comment.