fresh install leaves uhttpd.main with no listeners — LuCI unbound, procd crash-loops the default uhttpd instance
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- linux, shell
- Domain
- infrastructure
Research direction
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.
Written by the indexing model from the issue text.
Description
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 withuci show uhttpd | grep listenandlogread | 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.adminlisteners 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.
- Dominant language
- Go
- Stars
- 12
- Forks
- 14
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 239
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from OpenTollGate/tollgate-module-basic-go
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
OpenTollGate/tollgate-module-basic-go#833 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
OpenTollGate/tollgate-module-basic-go#813 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
OpenTollGate/tollgate-module-basic-go#804 ·
Maintainers usually reply within 1 day
-
go-battery needs an ndsctl on PATH: TestPurchaseSessionGuardHoldsThroughTheOutcomeUnknownWindow fails on bare hosts (passes with stub)Possibly taken @Amperstrand claimed this 1 day ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
OpenTollGate/tollgate-module-basic-go#726 · 2 comments ·
Maintainers usually reply within 1 day
-
rebrand-literal-gutter: uhttpd section-vocabulary check trips on a COMMENT (uhttpd.luci in 92-tollgate-admin-setup:178)Possibly taken @Amperstrand claimed this 1 day ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
OpenTollGate/tollgate-module-basic-go#723 ·
Maintainers usually reply within 1 day
All issues in OpenTollGate/tollgate-module-basic-go
Similar issues
-
small item
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
canonical/pebble#1127 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 89/100
open-policy-agent/opa#9366 · 1 reaction ·
Maintainers usually reply within 1 day
-
defect
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nats-io/nats-server#8752 ·
Maintainers usually reply within 1 day
-
enhancement needs-acceptance wg/router-models-inference-runtime
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
vllm-project/semantic-router#5015 · 1 comment ·
Maintainers usually reply within 1 day
-
fileserver: precompressed sidecar's Content-Encoding and Content-Length end up on error responsesPossibly taken @NitinKumar004 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
caddyserver/caddy#8204 ·
Maintainers usually reply within 1 day