fresh install leaves uhttpd.main with no listeners — LuCI unbound, procd crash-loops the default uhttpd instance

Chiusa
#849 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

@Amperstrand ci sta già lavorando.

Dal 12/10/2026.

  • #899 di @Amperstrand — aperta

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
linux, shell

Direzione di ricerca

Start with the uhttpd surgery in 99-tollgate-setup and the mode-aware writer's main-section handling, to find which step should write the board-mode pair onto uhttpd.main and why it does not. Reproduce with uci show uhttpd | grep listen and logread | grep -c "No sockets bound" on a fresh install. Done means every shipped uhttpd section has a listener, confirmed by a tests/packaging/ assertion, with no crash loop.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

On a fresh stock OpenWrt 25.12.5 x86-64 VM, installing tollgate-wrt (built from main @ b6f7aa7) leaves the uhttpd main section with no listen_http/listen_https options at all. The uhttpd init still starts it as the default procd instance, which exits with No sockets bound, unable to continue and enters a crash loop. Net effect: LuCI is unreachable — nothing listens on the board-mode secondary pair (:8090/:8443) that the entry-port decision assigns to uhttpd.main.

The three TollGate-created instances all serve correctly; this is solely the leftover bare main section.

Where seen

The #838 post-merge verification lane (QEMU/KVM on ai-legion-small, stock OpenWrt 25.12.5 x86-64 generic-ext4-combined, pristine snapshot boot, serial-console driven). Artifact: tollgate-wrt-0.6.0_rc1-r0.apk from scripts/build-sdk-package.sh (x86-64-25.12.0 apk lane, portal bundle staged from the pin), sha256 fa299cbdbf0e9e09423d73d716f11d2bbfcb71429f8ed0b79d2eab546c3fc09c, hash-verified on-guest. Observed identically on two independent fresh installs, and it persists across reboot.

Evidence

uci show uhttpd | grep -E "listen|home" after install (and after reboot):

uhttpd.main.home='/www'                                  ← no listen options
uhttpd.portal.listen_http='0.0.0.0:2051' '[::]:2051'
uhttpd.portal.home='/etc/tollgate/tollgate-captive-portal-site'
uhttpd.trusted.listen_http='0.0.0.0:80' '[::]:80'
uhttpd.trusted.home='/etc/tollgate/router-home'
uhttpd.admin.listen_http='0.0.0.0:8080' '[::]:8080'
uhttpd.admin.listen_https='0.0.0.0:443' '[::]:443'
uhttpd.admin.home='/www/tollgate'

netstat -tln — :8080, :443, :2051, :80 listening; no :8090/:8443. Three uhttpd processes up (portal, trusted, admin — the admin one with the provisioned hostname in argv).

logread:

daemon.err uhttpd[N]: Error: No sockets bound, unable to continue      (every ~5 s)
daemon.info procd: Instance uhttpd::instance1 in a crash loop 6 crashes, 0 seconds since last crash

Analysis

The stock image's uhttpd.main listeners (:80/:443) were redistributed by the setup (:80 → the trusted router-home instance, the entry pair → uhttpd.admin in board mode) — but nothing wrote main's board-mode secondary pair (:8090/:8443), leaving the section bare. The uhttpd init's default instance then has nothing to bind and crash-loops. Candidate owners of that write: 99-tollgate-setup's uhttpd surgery, or the mode-aware writer's main-section half.

Caveats and scope

  • VM environment: no wifi radios, no br-private (the install notes "br-private did not appear within 15 s — expected on devices without a private network configured"). A radio/bridge-dependent conditional could explain the missing write; real-router confirmation is pending — a desk unit can check with uci show uhttpd | grep listen and logread | grep -c "No sockets bound".
  • Not #838's blast radius: in the same runs the admin gate/order behaved exactly as designed (credential created before the gate; uhttpd.admin listeners intact; board serving).

Suggested fix shape

Either write the board-mode secondary pair onto uhttpd.main (LuCI reachable per the entry-port decision), or disable/omit the bare default instance so procd does not crash-loop it. A tests/packaging/ assertion that every shipped uhttpd section carries at least one listener would fence the class.

Lingua principale
Go
Stelle
12
Fork
14
Merge medio
4g 19h
PR unite (30g)
213

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di OpenTollGate/tollgate-module-basic-go

Tutte le issue di OpenTollGate/tollgate-module-basic-go

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.