diff --git a/net/ghttp/ghttp_server_config.go b/net/ghttp/ghttp_server_config.go index 85ed565a2..437b662e1 100644 --- a/net/ghttp/ghttp_server_config.go +++ b/net/ghttp/ghttp_server_config.go @@ -420,11 +420,10 @@ func (s *Server) SetHTTPSPort(port ...int) { // SetListener set the custom listener for the server. // It will overwrite the address you specified before. func (s *Server) SetListener(l net.Listener) error { - addrArray := gstr.SplitAndTrim(l.Addr().String(), ":") - port, err := strconv.Atoi(addrArray[len(addrArray)-1]) - if err != nil { - return err + if l == nil { + return gerror.NewCodef(gcode.CodeInvalidParameter, "listener is nil") } + port := (l.Addr().(*net.TCPAddr)).Port s.config.Address = fmt.Sprintf(":%d", port) s.config.Listeners = map[int]net.Listener{port: l} return nil @@ -435,16 +434,12 @@ func (s *Server) SetListener(l net.Listener) error { // If the listener's port not match the port provided in map, the method will return error. func (s *Server) SetListeners(listeners map[int]net.Listener) error { for k, v := range listeners { - addrArray := gstr.SplitAndTrim(v.Addr().String(), ":") - port, err := strconv.Atoi(addrArray[len(addrArray)-1]) - if err != nil { - return err - } - if port != k { + portIndeed := (v.Addr().(*net.TCPAddr)).Port + if portIndeed != k { return gerror.NewCodef( gcode.CodeInvalidParameter, - "listener specified by port %d should listen at port %d, but got port: %d", - k, k, port, + "listener specified by port %d listen at port %d indeed", + k, portIndeed, ) } } diff --git a/net/ghttp/ghttp_z_unit_feature_custom_listeners_test.go b/net/ghttp/ghttp_z_unit_feature_custom_listeners_test.go index 3efa2c193..8846db62d 100644 --- a/net/ghttp/ghttp_z_unit_feature_custom_listeners_test.go +++ b/net/ghttp/ghttp_z_unit_feature_custom_listeners_test.go @@ -76,8 +76,8 @@ func Test_SetWrongCustomListeners(t *testing.T) { s.SetAddr(":8199") ln, err := net.Listen("tcp", ":8299") t.AssertNil(err) - s.SetListeners(map[int]net.Listener{8199: ln}) - + err = s.SetListeners(map[int]net.Listener{8199: ln}) + t.AssertNQ(err, nil) s.Start() defer s.Shutdown()