From 891bf15f3ceb3f69eaf590882ba3f245811c1698 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Mon, 1 Jul 2024 18:24:06 +0200 Subject: pkg/rpcserver: remove direct accesses to Runner fields --- pkg/rpcserver/rpcserver.go | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) (limited to 'pkg/rpcserver/rpcserver.go') 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) } } -- cgit mrf-deployment