优化API节点监听逻辑,提升兼容性

如果用户填写的GPRC监听端口中的地址无法监听,则尝试只监听端口
This commit is contained in:
GoEdgeLab
2021-07-06 15:19:39 +08:00
parent 7ffa4c3cf9
commit f95b5193ba

View File

@@ -315,8 +315,20 @@ func (this *APINode) listenPorts(apiNode *models.APINode) (isListening bool) {
for _, addr := range listen.Addresses() { for _, addr := range listen.Addresses() {
listener, err := net.Listen("tcp", addr) listener, err := net.Listen("tcp", addr)
if err != nil { if err != nil {
remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error()) remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error() + ", we will try to listen port only")
continue
// 试着只监听端口
_, port, err := net.SplitHostPort(addr)
if err != nil {
continue
}
remotelogs.Println("API_NODE", "retry listening port ':"+port+"' only ...")
listener, err = net.Listen("tcp", ":"+port)
if err != nil {
remotelogs.Error("API_NODE", "listening ':"+port+"' failed: "+err.Error())
continue
}
remotelogs.Println("API_NODE", "retry listening port ':"+port+"' only ok")
} }
go func() { go func() {
err := this.listenRPC(listener, nil) err := this.listenRPC(listener, nil)
@@ -351,8 +363,19 @@ func (this *APINode) listenPorts(apiNode *models.APINode) (isListening bool) {
for _, addr := range listen.Addresses() { for _, addr := range listen.Addresses() {
listener, err := net.Listen("tcp", addr) listener, err := net.Listen("tcp", addr)
if err != nil { if err != nil {
remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error()) remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error() + ", we will try to listen port only")
continue // 试着只监听端口
_, port, err := net.SplitHostPort(addr)
if err != nil {
continue
}
remotelogs.Println("API_NODE", "retry listening port ':"+port+"' only ...")
listener, err = net.Listen("tcp", ":"+port)
if err != nil {
remotelogs.Error("API_NODE", "listening ':"+port+"' failed: "+err.Error())
continue
}
remotelogs.Println("API_NODE", "retry listening port ':"+port+"' only ok")
} }
go func() { go func() {
err := this.listenRPC(listener, &tls.Config{ err := this.listenRPC(listener, &tls.Config{