提交 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,29 +443,35 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, error ...@@ -443,29 +443,35 @@ 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 == "" { apiAddrs = cfg.Addresses.API
apiAddrs = cfg.Addresses.API } else {
} else { apiAddrs = append(apiAddrs, apiAddr)
apiAddrs = append(apiAddrs, apiAddr) }
}
listeners := make([]manet.Listener, 0, len(apiAddrs)) listenerAddrs := make(map[string]bool, len(listeners))
for _, addr := range apiAddrs { for _, listener := range listeners {
apiMaddr, err := ma.NewMultiaddr(addr) listenerAddrs[string(listener.Multiaddr().Bytes())] = true
if err != nil { }
return nil, fmt.Errorf("serveHTTPApi: invalid API address: %q (err: %s)", apiAddr, err)
}
apiLis, err := manet.Listen(apiMaddr) for _, addr := range apiAddrs {
if err != nil { apiMaddr, err := ma.NewMultiaddr(addr)
return nil, fmt.Errorf("serveHTTPApi: manet.Listen(%s) failed: %s", apiMaddr, err) if err != nil {
} return nil, fmt.Errorf("serveHTTPApi: invalid API address: %q (err: %s)", apiAddr, err)
}
if listenerAddrs[string(apiMaddr.Bytes())] {
continue
}
listeners = append(listeners, apiLis) apiLis, err := manet.Listen(apiMaddr)
if err != nil {
return nil, fmt.Errorf("serveHTTPApi: manet.Listen(%s) failed: %s", apiMaddr, err)
} }
listenerAddrs[string(apiMaddr.Bytes())] = true
listeners = append(listeners, apiLis)
} }
for _, listener := range listeners { for _, listener := range listeners {
...@@ -577,20 +583,28 @@ func serveHTTPGateway(req *cmds.Request, cctx *oldcmds.Context) (<-chan error, e ...@@ -577,20 +583,28 @@ 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))
gatewayAddrs := cfg.Addresses.Gateway for _, listener := range listeners {
for _, addr := range gatewayAddrs { listenerAddrs[string(listener.Multiaddr().Bytes())] = true
gatewayMaddr, err := ma.NewMultiaddr(addr) }
if err != nil {
return nil, fmt.Errorf("serveHTTPGateway: invalid gateway address: %q (err: %s)", addr, err)
}
gwLis, err := manet.Listen(gatewayMaddr) gatewayAddrs := cfg.Addresses.Gateway
if err != nil { for _, addr := range gatewayAddrs {
return nil, fmt.Errorf("serveHTTPGateway: manet.Listen(%s) failed: %s", gatewayMaddr, err) gatewayMaddr, err := ma.NewMultiaddr(addr)
} if err != nil {
listeners = append(listeners, gwLis) return nil, fmt.Errorf("serveHTTPGateway: invalid gateway address: %q (err: %s)", addr, err)
}
if listenerAddrs[string(gatewayMaddr.Bytes())] {
continue
}
gwLis, err := manet.Listen(gatewayMaddr)
if err != nil {
return nil, fmt.Errorf("serveHTTPGateway: manet.Listen(%s) failed: %s", gatewayMaddr, err)
} }
listenerAddrs[string(gatewayMaddr.Bytes())] = true
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
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论