From 4c3da0f2e1063ccb32933faff4601d5f5e0f987c Mon Sep 17 00:00:00 2001 From: Firescar96 Date: Fri, 24 Jun 2016 16:27:55 -0400 Subject: node, p2p, internal: Add ability to remove peers via admin interface --- node/api.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'node') diff --git a/node/api.go b/node/api.go index 9b2be9c2e..3523874ab 100644 --- a/node/api.go +++ b/node/api.go @@ -58,6 +58,22 @@ func (api *PrivateAdminAPI) AddPeer(url string) (bool, error) { return true, nil } +// RemovePeer disconnects from a a remote node if the connection exists +func (api *PrivateAdminAPI) RemovePeer(url string) (bool, error) { + // Make sure the server is running, fail otherwise + server := api.node.Server() + if server == nil { + return false, ErrNodeStopped + } + // Try to remove the url as a static peer and return + node, err := discover.ParseNode(url) + if err != nil { + return false, fmt.Errorf("invalid enode: %v", err) + } + server.RemovePeer(node) + return true, nil +} + // StartRPC starts the HTTP RPC API server. func (api *PrivateAdminAPI) StartRPC(host *string, port *rpc.HexNumber, cors *string, apis *string) (bool, error) { api.node.lock.Lock() -- cgit v1.2.3