feat(rigctld): say so when another program owns the CAT port
Listen() succeeding is not the same as being reachable. OpsLog binds 0.0.0.0, and Windows lets a second program bind the SAME port on the specific address 127.0.0.1. Connections to localhost then go to the more specific listener, so every client reaches the other program while ours sits there having logged "sharing CAT on port 4532" and never seeing a single connection. Found with Nexus, which starts its own rigctld on 127.0.0.1:4532 and talks to it. Neither side reports anything wrong: the operator gets a CAT timeout from a daemon with no radio behind it, and OpsLog's log is silent because nothing ever arrived. Three exchanges went into establishing that the connection simply never reached us — the port table was what settled it, not the code. So the server now dials its own port at startup and checks the connection lands on its own accept loop. If it does not, it says which program will be receiving the CAT connections and what to do. The counter it compares can only be raised by our own accept loop, so a real client arriving during the probe makes the check pass, never fail wrongly.
This commit is contained in:
+4
-2
@@ -6,13 +6,15 @@
|
||||
"Digital decodes: a station's grid square could be logged as its callsign. An unrecognised word after CQ made the parser skip a slot, and a four-character grid passes every shape test a callsign does, so \"CQ FOO JN36\" was read as a contact with JN36 — spotted, coloured and counted like any other station. A grid in the callsign position is now refused.",
|
||||
"Shared CAT no longer drops when the rig is busy. A Kenwood answers \"?;\" for a moment after coming out of transmit, which is exactly when polling resumes — and that single refused poll tore down the whole CAT link. WSJT-X, which keys through it, lost the radio mid-sequence and Hamlib then sent an uninitialised frequency, so the operator got an alarming frequency error whose real cause was three lines earlier. A busy rig is now ridden out for up to three polls; a genuine serial fault still drops immediately.",
|
||||
"CW over CAT now works on a Kenwood. The KY command was written against Elecraft's, which takes a string of any length; a Kenwood requires exactly 24 characters, so every message was refused and OpsLog reported that the radio would not do CW over CAT at all — sending operators to buy a serial keyer they did not need. A semicolon is also stripped from CW text now: it ends a CAT frame, so one in a macro cut the command short.",
|
||||
"Shared CAT now says so when a client is misconfigured. A program set to a Kenwood or Yaesu RIG MODEL instead of Hamlib NET rigctl sends raw rig commands to the CAT-sharing port; the reply it gets back has no terminator it recognises, so it reports a timeout with no data and the operator concludes CAT sharing is broken. The log now names the mistake and the setting that fixes it."
|
||||
"Shared CAT now says so when a client is misconfigured. A program set to a Kenwood or Yaesu RIG MODEL instead of Hamlib NET rigctl sends raw rig commands to the CAT-sharing port; the reply it gets back has no terminator it recognises, so it reports a timeout with no data and the operator concludes CAT sharing is broken. The log now names the mistake and the setting that fixes it.",
|
||||
"Shared CAT now warns when another program has taken its port. Binding successfully is not the same as being reachable: OpsLog listens on every interface, and Windows lets a second program bind the SAME port on 127.0.0.1 alone — after which every local connection goes to that one, while OpsLog waits for clients that never arrive and reports nothing wrong. Seen with Nexus, which starts its own rigctld. The log now says so at startup and tells you what to do about it."
|
||||
],
|
||||
"fr": [
|
||||
"Décodes digitaux : le carré locator d une station pouvait être enregistré comme son indicatif. Un mot non reconnu après CQ faisait sauter un cran au parseur, et un grid de quatre caractères passe tous les tests de forme d un indicatif — « CQ FOO JN36 » était donc lu comme un contact avec JN36, spotté, coloré et compté comme n importe quelle autre station. Un grid à la place de l indicatif est maintenant refusé.",
|
||||
"Le CAT partagé ne tombe plus quand le rig est occupé. Un Kenwood répond « ?; » un court instant en sortie d émission, c est-à-dire précisément au moment où le poll reprend — et ce seul refus faisait tomber tout le lien CAT. WSJT-X, qui émet à travers lui, perdait la radio en pleine séquence et Hamlib envoyait ensuite une fréquence non initialisée : l opérateur voyait une erreur de fréquence inquiétante dont la vraie cause était trois lignes plus haut. Un rig occupé est désormais encaissé sur trois polls au plus ; une vraie panne série tombe toujours immédiatement.",
|
||||
"Le CW par CAT fonctionne enfin sur un Kenwood. La commande KY avait été écrite d après celle d Elecraft, qui accepte une chaîne de longueur libre ; un Kenwood en exige exactement 24 caractères, donc chaque message était refusé et OpsLog annonçait que la radio ne savait pas faire de CW par CAT — envoyant des opérateurs acheter un keyer série dont ils n avaient pas besoin. Le point-virgule est aussi retiré du texte CW : il termine une trame CAT, donc un seul dans une macro coupait la commande.",
|
||||
"Le CAT partagé signale désormais un client mal configuré. Un logiciel réglé sur un MODÈLE de rig Kenwood ou Yaesu au lieu de Hamlib NET rigctl envoie des commandes rig brutes sur le port de partage ; la réponse qu il reçoit ne porte pas le terminateur qu il attend, il annonce donc un délai dépassé sans données et l opérateur en conclut que le partage CAT est cassé. Le log nomme maintenant l erreur et le réglage qui la corrige."
|
||||
"Le CAT partagé signale désormais un client mal configuré. Un logiciel réglé sur un MODÈLE de rig Kenwood ou Yaesu au lieu de Hamlib NET rigctl envoie des commandes rig brutes sur le port de partage ; la réponse qu il reçoit ne porte pas le terminateur qu il attend, il annonce donc un délai dépassé sans données et l opérateur en conclut que le partage CAT est cassé. Le log nomme maintenant l erreur et le réglage qui la corrige.",
|
||||
"Le CAT partagé signale désormais qu un autre programme lui a pris son port. Réussir à ouvrir le port n est pas la même chose qu être joignable : OpsLog écoute sur toutes les interfaces, et Windows autorise un second programme à ouvrir le MÊME port sur la seule adresse 127.0.0.1 — dès lors toutes les connexions locales vont à celui-là, pendant qu OpsLog attend des clients qui n arrivent jamais sans rien signaler. Constaté avec Nexus, qui lance son propre rigctld. Le log le dit maintenant au démarrage, et indique quoi faire."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user