Pass http.ServeTLS() errors back to the caller

Closes: #2460
This commit is contained in:
Alessio Treglia
2018-09-21 15:06:40 +01:00
parent 8d50bb9dad
commit 076ddcf07d
2 changed files with 24 additions and 8 deletions

View File

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

View File

@@ -5,11 +5,14 @@ import (
"io"
"io/ioutil"
"net/http"
"os"
"sync"
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/require"
"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)
}
}
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)
}