Ein abgelehnter Sendewunsch sagt, DASS und WARUM - #194
Merged
Merged
Conversation
`trx:` und `tune:` wurden bei fehlender Freigabe stumm verworfen. Am Pult
faellt das nicht auf — dort kommt der Befehl von Loopback und geht durch.
Auf einer Fernbedienung ist ein stummes Nein nicht von einem Fehler zu
unterscheiden: der Bediener drueckt, nichts passiert, nichts erklaert es.
Fuer die Halteleiste am Telefon ist genau das der Unterschied zwischen
"nicht freigegeben" und "kaputt".
Der Server antwortet dem ABLEHNENDEN CLIENT ALLEIN:
tx_err:nicht freigegeben;
Dieselbe Form wie log_qso_err: — ein Longpath-eigener Befehl, erkennbar als
solcher und von fremden Clients gefahrlos zu ignorieren. TCI verwirft
abgelehnte Befehle antwortlos, und daran aendert sich nichts: die Zeile geht
nur an diesen einen Client und nur dort, wo bisher gar nichts kam. WSJT-X,
N1MM und JTDX sprechen ueber Loopback und laufen nie in die Sperre.
An der Sperre selbst ist nichts geaendert.
Zwei Pruefpunkte, und der zweite ist der wichtigere:
abgelehnt_wird_dem_client_gesagt(trx|tune) — die Absage kommt UND der
Besitzer bleibt leer (eine hoefliche Absage, die den Sender tastet,
waere das Schlimmste von beidem)
mit_freigabe_kommt_keine_absage — ohne diesen Punkt waere ein
Server, der IMMER tx_err schickt, gruen
Gegenprobe gefahren: ohne die beiden Aufrufe wird der Stand rot (16 von 18),
mit ihnen 18 von 18.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Gegenstueck zu tx_err: auf der Seite wird aus der Absage eine lesbare Zeile
("SENDEN ABGELEHNT — NICHT FREIGEGEBEN") statt eines stummen Nichts.
Die Attrappe fuehrt die Sperre jetzt mit, und zwar absichtlich NICHT
gutmuetiger als der echte Server: ohne --sendenfrei wird jedes trx/tune mit
true abgelehnt, mit Grund, und es wird nicht getastet. Eine Attrappe, die
mehr durchlaesst als das Original, verschiebt Fehler nach hinten.
Geprueft: ein WebSocket-Client gegen die Attrappe bekommt
`tx_err:nicht freigegeben` und KEIN `trx:0,true` zurueck.
NICHT geprueft: wie die Zeile am Telefon aussieht. Sie laesst sich noch gar
nicht ausloesen, weil die Halteleiste bis heute nicht tastet — der Weg
dorthin ist Absicht und bleibt gesperrt, bis der Betreiber ihn freigibt.
Sobald getastet wird, ist der Handler da und wird im selben Zug am Geraet
angesehen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Erst stand dort eine abgeblendete Taste mit einer Warnung darunter. Gut
gemeint und im Alltag falsch: ueber `http` — also genau dort, wo das Telefon
die Seite holt — kann sie NIE etwas tun. Eine dauerhaft tote Taste im besten
Daumenbereich sieht aus wie ein Defekt und nimmt Platz fuer etwas, das dort
nicht geht. Dieselbe Ueberlegung wie bei den beiden Sendetasten, die aus
demselben Grund zu einer ruhigen Zeile geschrumpft sind.
Der Grund bleibt lesbar, aber als Zeile statt als Bedienelement, das zum
Druecken einlaedt:
MIKROFON BRAUCHT EIN ZERTIFIKAT (HTTPS)
Live an beiden Zustaenden geprueft, dieselbe Seite:
ueber 172.30.30.121 sicher=false Taste versteckt, Pegel versteckt,
Zeile steht
ueber 127.0.0.1 sicher=true Taste da, Pegel da, Zeile leer
Der zweite Lauf ist die Gegenprobe: eine Fassung, die immer versteckt,
waere damit rot.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Merged
oe5sos
added a commit
that referenced
this pull request
Oct 4, 2026
103 Commits seit 0.6.5, zwei Tage. Thema: eine Anzeige, die schweigt, ist so schlimm wie eine, die luegt. Vom Telefon laesst sich loggen (eigener TCI-Befehl log_qso, PR #184/#185). Der Sendeton ist bis zum fertigen Rahmen gebaut, samt Haltetaste und Pegelbalken — getastet wird davon nichts, und das ist Absicht. Befund des Tages: am Telefon fehlen Mikrofon, AudioWorklet und Opus aus EINEM Grund — isSecureContext ist dort false. Drei Posten, die als drei verschiedene Eigenheiten in den Unterlagen standen. Zertifikat, https und TLS auf der TCI-Bruecke sind gebaut (#188). Dazu eine Reihe Stellen, die etwas wussten und nichts sagten: die Einstellungs-Hygiene (#182), sieben Audio-Geraete ohne Zeitlimit (#176), der gescheiterte Versand ohne Grund (#189, auf Windows ueber WSAGetLastError, weil Winsock errno gar nicht setzt), der stumm verworfene Sendewunsch (#194), 264 fremde Linux-Warnungen (#177/#178). Version in CMakeLists auf 0.6.6, [Unreleased] abgeschlossen und ein neuer leerer Abschnitt eroeffnet. Co-authored-by: Claude Opus 5 <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.
Was ich gesucht und nicht gefunden habe
Vor dem Tastweg wollte ich die drei Sendesperren festnageln. Sie sind
bereits deutlich besser abgedeckt als erwartet — hängender Client
(
a_hung_client_that_stops_answering_pings_is_released), verschwundenerClient, Sendezeit-Deckel (inkl. „aus" und negativ), TX-Ton-Mutex,
Schreibweisen (
TRX:,trx :). Da war nichts nachzubauen.Was wirklich fehlte
trx:undtune:werden bei fehlender Freigabe stumm verworfen.Am Pult fällt das nie auf: dort kommt der Befehl von Loopback und geht
durch. Auf einer Fernbedienung ist ein stummes Nein nicht von einem
Defekt zu unterscheiden — der Bediener drückt, nichts passiert, nichts
erklärt es. Für die Halteleiste am Telefon ist genau das der Unterschied
zwischen „nicht freigegeben" und „kaputt".
Der Server antwortet jetzt dem ablehnenden Client allein:
Dieselbe Form wie
log_qso_err:— ein Longpath-eigener Befehl, erkennbarals solcher und von fremden Clients gefahrlos zu ignorieren. TCI verwirft
abgelehnte Befehle antwortlos, und daran ändert sich nichts: die Zeile geht
nur an diesen einen Client und nur dort, wo bisher gar nichts kam.
WSJT-X, N1MM und JTDX sprechen über Loopback und laufen nie in die Sperre.
An der Sperre selbst ist nichts geändert.
Geprüft
Zwei neue Punkte in
tst_tci_sendesperre, und der zweite ist der wichtigere:abgelehnt_wird_dem_client_gesagt(trx|tune)mit_freigabe_kommt_keine_absagetx_errschickt, grünGegenprobe gefahren:
Die Attrappe führt die Sperre jetzt mit — absichtlich nicht gutmütiger
als der echte Server. Ein WebSocket-Client gegen sie bekommt
tx_err:nicht freigegebenund keintrx:0,true. Eine Attrappe, diemehr durchlässt als das Original, verschiebt Fehler nach hinten.
Nicht geprüft
Wie die Zeile am Telefon aussieht. Sie lässt sich noch gar nicht
auslösen, weil die Halteleiste bis heute nicht tastet — der Weg dorthin
ist Absicht und bleibt gesperrt, bis der Betreiber ihn freigibt. Der
Handler ist da; angesehen wird er im selben Zug wie das erste Tasten, an
der Dummy-Last.
🤖 Generated with Claude Code