Skip to content

Commit 0f0573c

Browse files
committed
loopd/daemon: make server gRPC/REST listeners configurable
1 parent 391ae9d commit 0f0573c

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

loopd/daemon.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,18 @@ import (
1818
"google.golang.org/grpc"
1919
)
2020

21+
// listenerCfg holds closures used to retrieve listeners for the gRPC services.
22+
type listenerCfg struct {
23+
// grpcListener returns a listener to use for the gRPC server.
24+
grpcListener func() (net.Listener, error)
25+
26+
// restListener returns a listener to use for the REST proxy.
27+
restListener func() (net.Listener, error)
28+
}
29+
2130
// daemon runs loopd in daemon mode. It will listen for grpc connections,
2231
// execute commands and pass back swap status information.
23-
func daemon(config *config) error {
32+
func daemon(config *config, lisCfg *listenerCfg) error {
2433
lnd, err := getLnd(config.Network, config.Lnd)
2534
if err != nil {
2635
return err
@@ -74,7 +83,7 @@ func daemon(config *config) error {
7483

7584
// Next, start the gRPC server listening for HTTP/2 connections.
7685
log.Infof("Starting gRPC listener")
77-
grpcListener, err := net.Listen("tcp", config.RPCListen)
86+
grpcListener, err := lisCfg.grpcListener()
7887
if err != nil {
7988
return fmt.Errorf("RPC server unable to listen on %s",
8089
config.RPCListen)
@@ -96,7 +105,7 @@ func daemon(config *config) error {
96105
}
97106

98107
log.Infof("Starting REST proxy listener")
99-
restListener, err := net.Listen("tcp", config.RESTListen)
108+
restListener, err := lisCfg.restListener()
100109
if err != nil {
101110
return fmt.Errorf("REST proxy unable to listen on %s",
102111
config.RESTListen)

loopd/start.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package loopd
22

33
import (
44
"fmt"
5+
"net"
56
"os"
67
"path/filepath"
78
"strings"
@@ -26,6 +27,18 @@ var (
2627
swapsLock sync.Mutex
2728
)
2829

30+
// newListenerCfg creates and returns a new listenerCfg from the passed config.
31+
func newListenerCfg(config *config) *listenerCfg {
32+
return &listenerCfg{
33+
grpcListener: func() (net.Listener, error) {
34+
return net.Listen("tcp", config.RPCListen)
35+
},
36+
restListener: func() (net.Listener, error) {
37+
return net.Listen("tcp", config.RESTListen)
38+
},
39+
}
40+
}
41+
2942
func Start() error {
3043
config := defaultConfig
3144

@@ -99,9 +112,11 @@ func Start() error {
99112
// Print the version before executing either primary directive.
100113
log.Infof("Version: %v", loop.Version())
101114

115+
lisCfg := newListenerCfg(&config)
116+
102117
// Execute command.
103118
if parser.Active == nil {
104-
return daemon(&config)
119+
return daemon(&config, lisCfg)
105120
}
106121

107122
if parser.Active.Name == "view" {

0 commit comments

Comments
 (0)