diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-07-01 18:24:06 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-07-04 12:34:14 +0000 |
| commit | 891bf15f3ceb3f69eaf590882ba3f245811c1698 (patch) | |
| tree | 7cee7d7754929871f1337cb509cb1fa76ee477bb /pkg/rpcserver/rpcserver.go | |
| parent | 092c1914a191f5858db674b4e367c6848500429e (diff) | |
pkg/rpcserver: remove direct accesses to Runner fields
Diffstat (limited to 'pkg/rpcserver/rpcserver.go')
| -rw-r--r-- | pkg/rpcserver/rpcserver.go | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/pkg/rpcserver/rpcserver.go b/pkg/rpcserver/rpcserver.go index 35b628715..da4faa19a 100644 --- a/pkg/rpcserver/rpcserver.go +++ b/pkg/rpcserver/rpcserver.go @@ -198,24 +198,18 @@ func (serv *Server) VMState() map[string]VMState { func (serv *Server) MachineInfo(name string) []byte { serv.mu.Lock() runner := serv.runners[name] - if runner != nil && (runner.conn == nil || runner.stopped) { - runner = nil - } serv.mu.Unlock() - if runner == nil { + if runner == nil || !runner.alive() { return []byte("VM is not alive") } - return runner.machineInfo + return runner.getMachineInfo() } func (serv *Server) RunnerStatus(name string) []byte { serv.mu.Lock() runner := serv.runners[name] - if runner != nil && (runner.conn == nil || runner.stopped) { - runner = nil - } serv.mu.Unlock() - if runner == nil { + if runner == nil || !runner.alive() { return []byte("VM is not alive") } return runner.queryStatus() @@ -244,13 +238,11 @@ func (serv *Server) handleConn(conn *flatrpc.Conn) { serv.mu.Lock() runner := serv.runners[name] - if runner == nil || runner.stopped { - serv.mu.Unlock() - log.Logf(2, "VM %v shut down before connect", name) + serv.mu.Unlock() + if runner == nil { + log.Logf(2, "unknown VM %v tries to connect", name) return } - serv.mu.Unlock() - defer close(runner.finished) opts := &handshakeConfig{ VMLess: serv.cfg.VMLess, @@ -447,7 +439,6 @@ func (serv *Server) CreateInstance(name string, injectExec chan<- bool) { sysTarget: serv.sysTarget, injectExec: injectExec, infoc: make(chan chan []byte), - finished: make(chan bool), requests: make(map[int64]*queue.Request), executing: make(map[int64]bool), lastExec: MakeLastExecuting(serv.cfg.Procs, 6), @@ -469,13 +460,9 @@ func (serv *Server) CreateInstance(name string, injectExec chan<- bool) { func (serv *Server) StopFuzzing(name string) { serv.mu.Lock() runner := serv.runners[name] - runner.stopped = true - conn := runner.conn serv.info[name] = VMState{StateStopping, time.Now()} serv.mu.Unlock() - if conn != nil { - conn.Close() - } + runner.stop() } func (serv *Server) ShutdownInstance(name string, crashed bool) ([]ExecRecord, []byte) { @@ -484,7 +471,7 @@ func (serv *Server) ShutdownInstance(name string, crashed bool) ([]ExecRecord, [ delete(serv.runners, name) serv.info[name] = VMState{StateOffline, time.Now()} serv.mu.Unlock() - return runner.shutdown(crashed) + return runner.shutdown(crashed), runner.getMachineInfo() } func (serv *Server) DistributeSignalDelta(plus signal.Signal) { @@ -508,7 +495,7 @@ func (serv *Server) foreachRunnerAsync(fn func(runner *Runner)) { serv.mu.Lock() defer serv.mu.Unlock() for _, runner := range serv.runners { - if runner.conn != nil { + if runner.alive() { go fn(runner) } } |
