diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-10-09 04:38:54 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-10-09 04:38:54 +0900 |
| commit | df9b77b077d967d35082adb8ab3b00dd67d7bc97 (patch) | |
| tree | 165258153f2f4ebcd8d6248741c7a7cf9416e093 /internal/app/finalise.go | |
| parent | a40d1827061650b5ab438e1cc10e12c31eb1391b (diff) | |
internal/app: do not encode config early
Finalise no longer clobbers hst.Config.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/app/finalise.go')
| -rw-r--r-- | internal/app/finalise.go | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/internal/app/finalise.go b/internal/app/finalise.go index a5286bd4..a2a8f30e 100644 --- a/internal/app/finalise.go +++ b/internal/app/finalise.go @@ -1,12 +1,9 @@ package app import ( - "bytes" "context" - "encoding/gob" "errors" "fmt" - "io" "os" "os/user" "sync/atomic" @@ -24,16 +21,14 @@ func newWithMessageError(msg string, err error) error { // An outcome is the runnable state of a hakurei container via [hst.Config]. type outcome struct { - // initial [hst.Config] gob stream for state data; - // this is prepared ahead of time as config is clobbered during seal creation - ct io.WriterTo - // Supplementary group ids. Populated during finalise. supp []string // Resolved priv side operating system interactions. Populated during finalise. sys *system.I // Transmitted to shim. Populated during finalise. state *outcomeState + // Kept for saving to [state]. + config *hst.Config // Whether the current process is in outcome.main. active atomic.Bool @@ -57,16 +52,6 @@ func (k *outcome) finalise(ctx context.Context, msg container.Msg, id *state.ID, return err } - // TODO(ophestra): do not clobber during finalise - { - // encode initial configuration for state tracking - ct := new(bytes.Buffer) - if err := gob.NewEncoder(ct).Encode(config); err != nil { - return &hst.AppError{Step: "encode initial config", Err: err} - } - k.ct = ct - } - // hsu expects numerical group ids supp := make([]string, len(config.Groups)) for i, name := range config.Groups { @@ -106,5 +91,6 @@ func (k *outcome) finalise(ctx context.Context, msg container.Msg, id *state.ID, k.sys = sys k.supp = supp k.state = &s + k.config = config return nil } |
