Skip to content

refactor: Newt runtime lifecycle to context-driven worker supervision.#300

Draft
LaurenceJJones wants to merge 510 commits into
fosrl:devfrom
LaurenceJJones:refactor/context-errgroup
Draft

refactor: Newt runtime lifecycle to context-driven worker supervision.#300
LaurenceJJones wants to merge 510 commits into
fosrl:devfrom
LaurenceJJones:refactor/context-errgroup

Conversation

@LaurenceJJones

@LaurenceJJones LaurenceJJones commented Apr 7, 2026

Copy link
Copy Markdown
Contributor

Community Contribution License Agreement

By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.

Description

Replace stop-channel orchestration with scoped context cancellation for tunnel and interval workers, add errgroup-based supervision for long-running services, and simplify shutdown to fail fast so Docker/systemd handles restarts.

also will help #24 as we dont return after interval we keep going to max interval ceiling, we should maybe also add flags or env that if we reach max interval to just kill process as we dont know if we need a new state to revive.

How to test?

Pure internal refactor.

dependabot Bot and others added 30 commits November 20, 2025 02:47
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.43.0 to 0.45.0.
- [Commits](golang/crypto@v0.43.0...v0.45.0)

---
updated-dependencies:
- dependency-name: golang.org/x/crypto
  dependency-version: 0.45.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.0 to 4.31.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@4e94bd1...fdbfb4d)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6.0.0 to 6.1.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@4469467...4dc6199)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…org/x/crypto-0.45.0

Bump golang.org/x/crypto from 0.43.0 to 0.45.0
fix(nix): resolve issues and revamp the flake
Add the Server Name Indication (SNI) field to healthcheck requests, if
present in the target config.

SNI handling is already present for proxying resources, but this has
not been implemented for healthcheck requests yet until this commit.

In order to facilitate this, this commit moves the client instantiation
to when the healthcheck is performed, rather than as a part of the
monitor init.
…healthchecks

feat(healthcheck): add TLS SNI header to request when needed
oschwartz10612 and others added 28 commits March 13, 2026 11:45
…precated calls

- Add maxUDPPacketSize constant to replace magic number 65507
- Remove commented-out code in Stop()
- Replace deprecated ne.Temporary() with errors.Is(err, net.ErrClosed)
- Use errors.As instead of type assertion for net.Error
- Use errors.Is for closed connection checks instead of string matching
- Handle closed connection gracefully when reading from UDP target
Currently we are doing fmt.sprintf on hostname and port which will not properly handle ipv6 addresses, instead of changing pangolin to send bracketed address a simply net.join can do this for us since we dont need to parse a formatted string
fix(healthcheck): Support ipv6 healthchecks
…up-basics

refactor(proxy): cleanup basics - constants, remove dead code, fix de…
Replace stop-channel orchestration with scoped context cancellation for tunnel and interval workers, add errgroup-based supervision for long-running services, and simplify shutdown to fail fast so Docker/systemd handles restarts.
Comment thread authdaemon.go
// startAuthDaemon initializes and starts the auth daemon.
// It validates requirements (Linux, root, preshared key) and runs the server
// until the provided context is cancelled.
func startAuthDaemon(ctx context.Context) error {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will check if code is reused in pangolin cli as this may break as the function doesnt automatically run in a go routine now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants