From db0152e3fa2f4f4e5c052e2e0f67a350b2cba167 Mon Sep 17 00:00:00 2001 From: "Hermes (Server)" Date: Wed, 19 Aug 2026 21:55:55 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8D=20Diagnose:=20Ping-Fehler=20mit=20?= =?UTF-8?q?vollen=20Details=20loggen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bisher stand im Log nur die nackte Exception-Message ("Connection timeout") — ohne URL und ohne Fehlertyp war die Ursache nicht eingrenzbar. Neu im Fehler-Log: - Fehlerart klassifiziert: TIMEOUT / SOCKET / TLS-HANDSHAKE / HTTP / FORMAT - SocketException zusätzlich mit osError-Message, errorCode, Adresse und Adress-Typ (IPv4 vs IPv6 — zeigt ein IPv6-Problem direkt an) - Server-URL sowie geparstes scheme/host/port (falsche URL, fehlendes https, DNS-Auflösung erkennbar) - e.runtimeType + Message Bewusst NICHT geloggt: die volle Ping-URI — sie enthält Auth-Token und Salt als Query-Parameter, die nicht auf dem Log-Server landen sollen. Co-Authored-By: Claude Haiku 4.5 Claude-Session: https://claude.ai/code/session_01XJzQjUtnvYUtHdnTs3iCru --- lib/services/navidrome_service.dart | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/services/navidrome_service.dart b/lib/services/navidrome_service.dart index 19663b9..b4d2a7e 100644 --- a/lib/services/navidrome_service.dart +++ b/lib/services/navidrome_service.dart @@ -1,4 +1,6 @@ +import 'dart:async'; import 'dart:convert'; +import 'dart:io'; import 'dart:math'; import 'package:flutter/foundation.dart'; import 'package:crypto/crypto.dart'; @@ -148,8 +150,31 @@ class NavidromeService { return false; } } catch (e) { - logger.error('Navidrome Ping Fehler', e, StackTrace.current); - debugPrint('Navidrome Ping Fehler: $e'); + // Details für die Diagnose: ohne URL/Exception-Typ ist im Log nicht + // erkennbar, ob DNS, IPv6, TLS oder eine falsche URL die Ursache ist. + // Bewusst NICHT die volle Ping-URI loggen — die enthält Token + Salt. + final ziel = Uri.tryParse(_serverUrl); + final art = switch (e) { + TimeoutException() => 'TIMEOUT (10s überschritten)', + SocketException(:final osError, :final address) => + 'SOCKET (os=${osError?.message ?? '-'} code=${osError?.errorCode ?? '-'} ' + 'addr=${address?.address ?? '-'} typ=${address?.type.name ?? '-'})', + HandshakeException() => 'TLS-HANDSHAKE', + HttpException() => 'HTTP', + FormatException() => 'FORMAT (URL unparsbar?)', + _ => 'SONSTIGE', + }; + logger.error( + 'Navidrome Ping Fehler [$art] ' + 'url=$_serverUrl ' + 'scheme=${ziel?.scheme ?? '-'} host=${ziel?.host ?? '-'} ' + 'port=${ziel?.hasPort == true ? ziel?.port : '(default)'} ' + 'typ=${e.runtimeType} ' + 'msg=$e', + e, + StackTrace.current, + ); + debugPrint('Navidrome Ping Fehler [$art] $_serverUrl: $e'); return false; } }