提交 a4914a44 作者: Steven Allen

systemd: merge API/gateway addresses

Instead of letting systemd override the configured addresses, merge them. This
is likely the "expected" behavior.
上级 1b052658
...@@ -443,7 +443,6 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error ...@@ -443,7 +443,6 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error
return nil, fmt.Errorf("serveHTTPApi: socket activation failed: %s", err) return nil, fmt.Errorf("serveHTTPApi: socket activation failed: %s", err)
} }
if len(listeners) == 0 {
apiAddrs := make([]string, 0, 2) apiAddrs := make([]string, 0, 2)
apiAddr, _ := req.Options[commands.ApiOption].(string) apiAddr, _ := req.Options[commands.ApiOption].(string)
if apiAddr == "" { if apiAddr == "" {
...@@ -452,21 +451,28 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error ...@@ -452,21 +451,28 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error
apiAddrs = append(apiAddrs, apiAddr) apiAddrs = append(apiAddrs, apiAddr)
} }
listeners := make([]manet.Listener, 0, len(apiAddrs)) listenerAddrs := make(map[string]bool, len(listeners))
for _, listener := range listeners {
listenerAddrs[string(listener.Multiaddr().Bytes())] = true
}
for _, addr := range apiAddrs { for _, addr := range apiAddrs {
apiMaddr, err := ma.NewMultiaddr(addr) apiMaddr, err := ma.NewMultiaddr(addr)
if err != nil { if err != nil {
return nil, fmt.Errorf("serveHTTPApi: invalid API address: %q (err: %s)", apiAddr, err) return nil, fmt.Errorf("serveHTTPApi: invalid API address: %q (err: %s)", apiAddr, err)
} }
if listenerAddrs[string(apiMaddr.Bytes())] {
continue
}
apiLis, err := manet.Listen(apiMaddr) apiLis, err := manet.Listen(apiMaddr)
if err != nil { if err != nil {
return nil, fmt.Errorf("serveHTTPApi: manet.Listen(%s) failed: %s", apiMaddr, err) return nil, fmt.Errorf("serveHTTPApi: manet.Listen(%s) failed: %s", apiMaddr, err)
} }
listenerAddrs[string(apiMaddr.Bytes())] = true
listeners = append(listeners, apiLis) listeners = append(listeners, apiLis)
} }
}
for _, listener := range listeners { for _, listener := range listeners {
// we might have listened to /tcp/0 - lets see what we are listing on // we might have listened to /tcp/0 - lets see what we are listing on
...@@ -577,7 +583,11 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e ...@@ -577,7 +583,11 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e
return nil, fmt.Errorf("serveHTTPGateway: socket activation failed: %s", err) return nil, fmt.Errorf("serveHTTPGateway: socket activation failed: %s", err)
} }
if len(listeners) == 0 { listenerAddrs := make(map[string]bool, len(listeners))
for _, listener := range listeners {
listenerAddrs[string(listener.Multiaddr().Bytes())] = true
}
gatewayAddrs := cfg.Addresses.Gateway gatewayAddrs := cfg.Addresses.Gateway
for _, addr := range gatewayAddrs { for _, addr := range gatewayAddrs {
gatewayMaddr, err := ma.NewMultiaddr(addr) gatewayMaddr, err := ma.NewMultiaddr(addr)
...@@ -585,13 +595,17 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e ...@@ -585,13 +595,17 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e
return nil, fmt.Errorf("serveHTTPGateway: invalid gateway address: %q (err: %s)", addr, err) return nil, fmt.Errorf("serveHTTPGateway: invalid gateway address: %q (err: %s)", addr, err)
} }
if listenerAddrs[string(gatewayMaddr.Bytes())] {
continue
}
gwLis, err := manet.Listen(gatewayMaddr) gwLis, err := manet.Listen(gatewayMaddr)
if err != nil { if err != nil {
return nil, fmt.Errorf("serveHTTPGateway: manet.Listen(%s) failed: %s", gatewayMaddr, err) return nil, fmt.Errorf("serveHTTPGateway: manet.Listen(%s) failed: %s", gatewayMaddr, err)
} }
listenerAddrs[string(gatewayMaddr.Bytes())] = true
listeners = append(listeners, gwLis) listeners = append(listeners, gwLis)
} }
}
// we might have listened to /tcp/0 - lets see what we are listing on // we might have listened to /tcp/0 - lets see what we are listing on
gwType := "readonly" gwType := "readonly"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论