Pass http.ServeTLS() errors back to the caller (#2461)

Closes: #2460

* Pass http.ServeTLS() errors back to the caller
* Update CHANGELOG
* Amend StartHTTPServer() too for consistency's sake
* Revert "Amend StartHTTPServer() too for consistency's sake"
This reverts commit 23bfb4c2e917f581702291fe3ea69fce23f8c89d.
This commit is contained in:
Alessio Treglia 2018-09-21 17:12:29 +01:00 committed by Alexander Simmerl
parent 886a83dfb8
commit f11db8c1b0
3 changed files with 25 additions and 8 deletions

View File

@ -33,3 +33,4 @@ IMPROVEMENTS:
BUG FIXES: BUG FIXES:
- [node] \#2294 Delay starting node until Genesis time - [node] \#2294 Delay starting node until Genesis time
- [rpc] \#2460 StartHTTPAndTLSServer() now passes StartTLS() errors back to the caller rather than hanging forever.

View File

@ -102,15 +102,16 @@ func StartHTTPAndTLSServer(
listener = netutil.LimitListener(listener, config.MaxOpenConnections) listener = netutil.LimitListener(listener, config.MaxOpenConnections)
} }
go func() { err = http.ServeTLS(
err := http.ServeTLS(
listener, listener,
RecoverAndLogHandler(maxBytesHandler{h: handler, n: maxBodyBytes}, logger), RecoverAndLogHandler(maxBytesHandler{h: handler, n: maxBodyBytes}, logger),
certFile, certFile,
keyFile, keyFile,
) )
if err != nil {
logger.Error("RPC HTTPS server stopped", "err", err) logger.Error("RPC HTTPS server stopped", "err", err)
}() return nil, err
}
return listener, nil return listener, nil
} }

View File

@ -5,11 +5,14 @@ import (
"io" "io"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"os"
"sync" "sync"
"sync/atomic" "sync/atomic"
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/require"
"github.com/tendermint/tendermint/libs/log" "github.com/tendermint/tendermint/libs/log"
) )
@ -60,3 +63,15 @@ func TestMaxOpenConnections(t *testing.T) {
t.Errorf("%d requests failed within %d attempts", failed, attempts) t.Errorf("%d requests failed within %d attempts", failed, attempts)
} }
} }
func TestStartHTTPAndTLSServer(t *testing.T) {
// set up fixtures
listenerAddr := "tcp://0.0.0.0:0"
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {})
// test failure
gotListener, err := StartHTTPAndTLSServer(listenerAddr, mux, "", "", log.TestingLogger(), Config{MaxOpenConnections: 1})
require.Nil(t, gotListener)
require.IsType(t, (*os.PathError)(nil), err)
}