Skip to content

Commit 8bcff16

Browse files
committed
fix nil pointer exception when calling Start again after address binding error
1 parent b445958 commit 8bcff16

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

echo.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,7 @@ func (e *Echo) StartServer(s *http.Server) (err error) {
732732
return s.Serve(e.Listener)
733733
}
734734

735-
func (e *Echo) configureServer(s *http.Server) (err error) {
735+
func (e *Echo) configureServer(s *http.Server) error {
736736
// Setup
737737
e.colorer.SetOutput(e.Logger.Output())
738738
s.ErrorLog = e.StdLogger
@@ -747,10 +747,11 @@ func (e *Echo) configureServer(s *http.Server) (err error) {
747747

748748
if s.TLSConfig == nil {
749749
if e.Listener == nil {
750-
e.Listener, err = newListener(s.Addr, e.ListenerNetwork)
750+
l, err := newListener(s.Addr, e.ListenerNetwork)
751751
if err != nil {
752752
return err
753753
}
754+
e.Listener = l
754755
}
755756
if !e.HidePort {
756757
e.colorer.Printf("⇨ http server started on %s\n", e.colorer.Green(e.Listener.Addr()))
@@ -791,7 +792,7 @@ func (e *Echo) TLSListenerAddr() net.Addr {
791792
}
792793

793794
// StartH2CServer starts a custom http/2 server with h2c (HTTP/2 Cleartext).
794-
func (e *Echo) StartH2CServer(address string, h2s *http2.Server) (err error) {
795+
func (e *Echo) StartH2CServer(address string, h2s *http2.Server) error {
795796
e.startupMutex.Lock()
796797
// Setup
797798
s := e.Server
@@ -808,11 +809,12 @@ func (e *Echo) StartH2CServer(address string, h2s *http2.Server) (err error) {
808809
}
809810

810811
if e.Listener == nil {
811-
e.Listener, err = newListener(s.Addr, e.ListenerNetwork)
812+
l, err := newListener(s.Addr, e.ListenerNetwork)
812813
if err != nil {
813814
e.startupMutex.Unlock()
814815
return err
815816
}
817+
e.Listener = l
816818
}
817819
if !e.HidePort {
818820
e.colorer.Printf("⇨ http server started on %s\n", e.colorer.Green(e.Listener.Addr()))

0 commit comments

Comments
 (0)