🔍 Diagnose: Ping-Fehler mit vollen Details loggen
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJzQjUtnvYUtHdnTs3iCru
This commit is contained in:
co-authored by
Claude Haiku 4.5
parent
91fbe3dd6e
commit
db0152e3fa
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user