aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2015-09-11 22:03:31 +0800
committerPéter Szilágyi <peterke@gmail.com>2015-09-11 22:03:31 +0800
commit3e6964b841bb22c4eab4cdaa22655beeae577419 (patch)
treefa1580b52213ec87a9cddc89e087ab8865a5f105
parent4e075e401354b4ee068cf78b1f283763fe927245 (diff)
downloaddexon-3e6964b841bb22c4eab4cdaa22655beeae577419.tar
dexon-3e6964b841bb22c4eab4cdaa22655beeae577419.tar.gz
dexon-3e6964b841bb22c4eab4cdaa22655beeae577419.tar.bz2
dexon-3e6964b841bb22c4eab4cdaa22655beeae577419.tar.lz
dexon-3e6964b841bb22c4eab4cdaa22655beeae577419.tar.xz
dexon-3e6964b841bb22c4eab4cdaa22655beeae577419.tar.zst
dexon-3e6964b841bb22c4eab4cdaa22655beeae577419.zip
rpc/comms: fix #1795, ensure IPC path exists before binding
-rw-r--r--rpc/comms/ipc_unix.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/rpc/comms/ipc_unix.go b/rpc/comms/ipc_unix.go
index 9d90da071..d68363a45 100644
--- a/rpc/comms/ipc_unix.go
+++ b/rpc/comms/ipc_unix.go
@@ -21,6 +21,7 @@ package comms
import (
"net"
"os"
+ "path/filepath"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
@@ -69,7 +70,11 @@ func (self *ipcClient) reconnect() error {
}
func startIpc(cfg IpcConfig, codec codec.Codec, initializer func(conn net.Conn) (shared.EthereumApi, error)) error {
- os.Remove(cfg.Endpoint) // in case it still exists from a previous run
+ // Ensure the IPC path exists and remove any previous leftover
+ if err := os.MkdirAll(filepath.Dir(cfg.Endpoint), 0751); err != nil {
+ return err
+ }
+ os.Remove(cfg.Endpoint)
l, err := net.ListenUnix("unix", &net.UnixAddr{Name: cfg.Endpoint, Net: "unix"})
if err != nil {