fix(http): specify ip stack when listen fails (#1306)

* fix(http): specify ip stack when listen fails

* break your err

* fix(http): log msg

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
This commit is contained in:
Kyle Sanderson 2023-12-25 04:29:20 -08:00 committed by GitHub
parent 8ef8bc6003
commit 0b34efc753
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -75,18 +75,32 @@ func NewServer(log logger.Logger, config *config.AppConfig, sse *sse.Server, db
func (s Server) Open() error { func (s Server) Open() error {
addr := fmt.Sprintf("%v:%v", s.config.Config.Host, s.config.Config.Port) addr := fmt.Sprintf("%v:%v", s.config.Config.Host, s.config.Config.Port)
listener, err := net.Listen("tcp", addr)
var err error
for _, proto := range []string{"tcp", "tcp4", "tcp6"} {
if err = s.tryToServe(addr, proto); err == nil {
break
}
s.log.Error().Err(err).Msgf("Failed to start %s server. Attempted to listen on %s", proto, addr)
}
return err
}
func (s Server) tryToServe(addr, protocol string) error {
listener, err := net.Listen(protocol, addr)
if err != nil { if err != nil {
return err return err
} }
s.log.Info().Msgf("Starting server %s. Listening on %s", protocol, listener.Addr().String())
server := http.Server{ server := http.Server{
Handler: s.Handler(), Handler: s.Handler(),
ReadHeaderTimeout: time.Second * 15, ReadHeaderTimeout: time.Second * 15,
} }
s.log.Info().Msgf("Starting server. Listening on %s", listener.Addr().String())
return server.Serve(listener) return server.Serve(listener)
} }