diff options
author | Felix Lange <fjl@users.noreply.github.com> | 2018-04-18 18:27:20 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-18 18:27:20 +0800 |
commit | 52b046c9b6a0f6a280ff797f90784f76bfd310b9 (patch) | |
tree | 709ce3f7e873e47bdac72ab4f9935cf7b3108c4b /rpc/endpoints.go | |
parent | 661f5f3dac23939630e3bf2f9ed2bf1bfb26e990 (diff) | |
download | dexon-52b046c9b6a0f6a280ff797f90784f76bfd310b9.tar.gz dexon-52b046c9b6a0f6a280ff797f90784f76bfd310b9.tar.zst dexon-52b046c9b6a0f6a280ff797f90784f76bfd310b9.zip |
rpc: clean up IPC handler (#16524)
This avoids logging accept errors on shutdown and removes
a bit of duplication. It also fixes some goimports lint warnings.
Diffstat (limited to 'rpc/endpoints.go')
-rw-r--r-- | rpc/endpoints.go | 36 |
1 files changed, 9 insertions, 27 deletions
diff --git a/rpc/endpoints.go b/rpc/endpoints.go index 9ba2ed970..692c62d3a 100644 --- a/rpc/endpoints.go +++ b/rpc/endpoints.go @@ -17,8 +17,9 @@ package rpc import ( - "github.com/ethereum/go-ethereum/log" "net" + + "github.com/ethereum/go-ethereum/log" ) // StartHTTPEndpoint starts the HTTP RPC endpoint, configured with cors/vhosts/modules @@ -81,9 +82,9 @@ func StartWSEndpoint(endpoint string, apis []API, modules []string, wsOrigins [] } -// StartIPCEndpoint starts an IPC endpoint -func StartIPCEndpoint(isClosedFn func() bool, ipcEndpoint string, apis []API) (net.Listener, *Server, error) { - // Register all the APIs exposed by the services +// StartIPCEndpoint starts an IPC endpoint. +func StartIPCEndpoint(ipcEndpoint string, apis []API) (net.Listener, *Server, error) { + // Register all the APIs exposed by the services. handler := NewServer() for _, api := range apis { if err := handler.RegisterName(api.Namespace, api.Service); err != nil { @@ -91,30 +92,11 @@ func StartIPCEndpoint(isClosedFn func() bool, ipcEndpoint string, apis []API) (n } log.Debug("IPC registered", "namespace", api.Namespace) } - // All APIs registered, start the IPC listener - var ( - listener net.Listener - err error - ) - if listener, err = CreateIPCListener(ipcEndpoint); err != nil { + // All APIs registered, start the IPC listener. + listener, err := ipcListen(ipcEndpoint) + if err != nil { return nil, nil, err } - go func() { - for { - conn, err := listener.Accept() - if err != nil { - // Terminate if the listener was closed - if isClosedFn() { - log.Info("IPC closed", "err", err) - } else { - // Not closed, just some error; report and continue - log.Error("IPC accept failed", "err", err) - } - continue - } - go handler.ServeCodec(NewJSONCodec(conn), OptionMethodInvocation|OptionSubscriptions) - } - }() - + go handler.ServeListener(listener) return listener, handler, nil } |