bug: path_info in handle_contact_message wird bedingungslos überschrieben #4

Closed
opened 2026-03-13 06:34:38 +01:00 by ppfeiffer · 0 comments
Owner

Problem

In handle_contact_message() wird path_info zunächst aufwendig aus den Contact-Daten und RF-Daten ermittelt (Zeilen 121–213), dann aber an den Zeilen 301–305 bedingungslos mit einem weniger informativen Wert überschrieben.

Datei: modules/message_handler.py, handle_contact_message(), Zeilen ~301–305

Betroffener Code

# Überschreibt IMMER – egal was oben ermittelt wurde
path_len = payload.get('path_len', 255)
if path_len == 255:
    path_info = "Direct (0 hops)"
else:
    path_info = f"Routed through {path_len} hops"

Auswirkung

Ein zuvor korrekt ermittelter Pfad wie "ab,cd,ef (3 hops)" (aus den Contact-Daten) wird ersetzt durch das generische "Routed through 3 hops". Der {connection_info}- und {path}-Platzhalter in Keyword-Responses zeigt dadurch stets nur den groben path_len-Wert, nie den tatsächlichen Routing-Pfad.

Fix

Den Block als echten Fallback verwenden:

if path_info in ("Unknown", "Unknown path"):
    path_len = payload.get('path_len', 255)
    if path_len == 255:
        path_info = "Direct (0 hops)"
    else:
        path_info = f"Routed through {path_len} hops"
## Problem In `handle_contact_message()` wird `path_info` zunächst aufwendig aus den Contact-Daten und RF-Daten ermittelt (Zeilen 121–213), dann aber an den Zeilen 301–305 **bedingungslos** mit einem weniger informativen Wert überschrieben. **Datei:** `modules/message_handler.py`, `handle_contact_message()`, Zeilen ~301–305 ## Betroffener Code ```python # Überschreibt IMMER – egal was oben ermittelt wurde path_len = payload.get('path_len', 255) if path_len == 255: path_info = "Direct (0 hops)" else: path_info = f"Routed through {path_len} hops" ``` ## Auswirkung Ein zuvor korrekt ermittelter Pfad wie `"ab,cd,ef (3 hops)"` (aus den Contact-Daten) wird ersetzt durch das generische `"Routed through 3 hops"`. Der `{connection_info}`- und `{path}`-Platzhalter in Keyword-Responses zeigt dadurch stets nur den groben `path_len`-Wert, nie den tatsächlichen Routing-Pfad. ## Fix Den Block als echten Fallback verwenden: ```python if path_info in ("Unknown", "Unknown path"): path_len = payload.get('path_len', 255) if path_len == 255: path_info = "Direct (0 hops)" else: path_info = f"Routed through {path_len} hops" ```
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ppfeiffer/meshcore-bot#4
No description provided.