aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/finalise.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/app/finalise.go')
-rw-r--r--internal/app/finalise.go20
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
}