From f95b5193ba5ed2d39edd05f3c731fade852c378d Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Tue, 6 Jul 2021 15:19:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96API=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E9=80=BB=E8=BE=91=EF=BC=8C=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 如果用户填写的GPRC监听端口中的地址无法监听,则尝试只监听端口 --- internal/nodes/api_node.go | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/internal/nodes/api_node.go b/internal/nodes/api_node.go index 76853c1f..65582896 100644 --- a/internal/nodes/api_node.go +++ b/internal/nodes/api_node.go @@ -315,8 +315,20 @@ func (this *APINode) listenPorts(apiNode *models.APINode) (isListening bool) { for _, addr := range listen.Addresses() { listener, err := net.Listen("tcp", addr) if err != nil { - remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error()) - continue + remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error() + ", we will try to listen port only") + + // 试着只监听端口 + _, 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() { err := this.listenRPC(listener, nil) @@ -351,8 +363,19 @@ func (this *APINode) listenPorts(apiNode *models.APINode) (isListening bool) { for _, addr := range listen.Addresses() { listener, err := net.Listen("tcp", addr) if err != nil { - remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error()) - continue + remotelogs.Error("API_NODE", "listening '"+addr+"' failed: "+err.Error() + ", we will try to listen port only") + // 试着只监听端口 + _, 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() { err := this.listenRPC(listener, &tls.Config{