fix(mdns): im eigenen AP bis zum Erfolg wiederholen, netif-Zeiger raus
I5: s_ap_mdns_done wurde VOR nl_mdns_on_ip_up() gesetzt und merkte damit den Versuch, nicht den Erfolg. Die Arbeit laeuft asynchron im tcpip-Thread; liefert pick_netif() dort NULL, weil das AP-Netif noch keine Adresse hat, protokolliert announce() nur "no usable netif yet" - und niemand versucht es je wieder, solange der AP steht. mDNS ist laut Spec Pflichtteil, die Lampe waere im eigenen AP dauerhaft nicht auffindbar. Neu meldet nl_mdns_service_up() den tatsaechlichen Zustand aus s_service_added, und der Netz-Task stoesst alle 5 s erneut an, solange die Lampe standalone ist, der AP steht und der Dienst noch nicht gemeldet ist. s_announce_pending deckt das Fenster zwischen dem Anstossen und dem Lauf von announce() ab: ohne das haette die Abfrage beim Wechsel Station -> eigener AP noch den Dienst des alten Netifs als Erfolg gewertet. Dazu der netif-Zeiger (%p) aus der mdns-Protokollzeile: waehrend der Fehlersuche war er wertvoll, in einer Release-Firmware ist er Rauschen. Namenskuerzel, Nummer und IPv4 unterscheiden Station und eigenen AP bereits eindeutig, eine Speicheradresse in einem Protokoll, das Nutzer weiterreichen, hilft niemandem - und die Abnahmeliste zitiert die Zeile ohnehin ohne ihn.
This commit is contained in:
@@ -1,8 +1,14 @@
|
||||
#ifndef NL_MDNS_H
|
||||
#define NL_MDNS_H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
/* Called by the network task once the station got an IP (again). */
|
||||
void nl_mdns_on_ip_up(void);
|
||||
/* True, sobald der Dienst wirklich angemeldet ist - und erst, nachdem die zuletzt
|
||||
* angestossene Bekanntmachung im tcpip-Thread auch gelaufen ist. Der Netz-Task stoesst
|
||||
* im eigenen AP so lange erneut an, bis das hier wahr ist (I5). */
|
||||
bool nl_mdns_service_up(void);
|
||||
/* Device name for the TXT record; re-announces when mDNS is running. */
|
||||
void nl_mdns_set_name(const char *name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user