Skip to content

Commit

Permalink
fix sighup issue with empty acl (#2296)
Browse files Browse the repository at this point in the history
Fixes #2291

Signed-off-by: Kristoffer Dalby <[email protected]>
  • Loading branch information
kradalby authored Dec 16, 2024
1 parent e00b9d9 commit ec8729b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 0 deletions.
8 changes: 8 additions & 0 deletions hscontrol/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -838,6 +838,10 @@ func (h *Headscale) Serve() error {
Str("signal", sig.String()).
Msg("Received SIGHUP, reloading ACL and Config")

if h.cfg.Policy.IsEmpty() {
continue
}

if err := h.loadPolicyManager(); err != nil {
log.Error().Err(err).Msg("failed to reload Policy")
}
Expand Down Expand Up @@ -1102,6 +1106,10 @@ func (h *Headscale) policyBytes() ([]byte, error) {
return nil, err
}

if p.Data == "" {
return nil, nil
}

return []byte(p.Data), err
}

Expand Down
4 changes: 4 additions & 0 deletions hscontrol/policy/pm.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ func (pm *PolicyManagerV1) SSHPolicy(node *types.Node) (*tailcfg.SSHPolicy, erro
}

func (pm *PolicyManagerV1) SetPolicy(polB []byte) (bool, error) {
if len(polB) == 0 {
return false, nil
}

pol, err := LoadACLPolicyFromBytes(polB)
if err != nil {
return false, fmt.Errorf("parsing policy: %w", err)
Expand Down
4 changes: 4 additions & 0 deletions hscontrol/types/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ type PolicyConfig struct {
Mode PolicyMode
}

func (p *PolicyConfig) IsEmpty() bool {
return p.Mode == PolicyModeFile && p.Path == ""
}

type LogConfig struct {
Format string
Level zerolog.Level
Expand Down

0 comments on commit ec8729b

Please sign in to comment.