]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - rpc/conn.go
Update copyright years
[safcm/safcm.git] / rpc / conn.go
index 9786941c7e808966a9a76841bfd6e03981f81ba6..8b63477fc624d82119f1459ce0e509de03a76f23 100644 (file)
@@ -1,6 +1,6 @@
 // Simple RPC-like protocol: implementation of connection and basic actions
 
-// Copyright (C) 2021  Simon Ruderich
+// Copyright (C) 2021-2024  Simon Ruderich
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -20,6 +20,7 @@ package rpc
 import (
        "bufio"
        "fmt"
+       "io/fs"
        "os/exec"
        "strings"
        "sync"
@@ -36,6 +37,8 @@ type Conn struct {
        sshRemote string
        sshOpts   []string
 
+       remoteHelpers fs.FS
+
        cmd  *exec.Cmd
        conn *safcm.GobConn
 }
@@ -124,15 +127,20 @@ func (c *Conn) wait() error {
 }
 
 // Kill forcefully terminates the connection. It's safe to call Kill (and
-// Wait) multiple times.
+// Wait) multiple times. Calling it before Dial*() was called will only close
+// the Events channel.
 func (c *Conn) Kill() error {
        if c.cmd == nil {
+               if c.events != nil {
+                       close(c.events)
+                       c.events = nil
+               }
                return fmt.Errorf("Dial*() not called or already terminated")
        }
 
        c.debugf("Kill: killing connection")
 
-       c.cmd.Process.Kill()
+       c.cmd.Process.Kill() //nolint:errcheck
        return c.wait()
 }