diff --git a/serverutil/http.go b/serverutil/http.go
index b1d4b94968edc27e116836d981440d24ebeae60e..81c9ae902ff30237d3a45c33edb7ab12fa809c9a 100644
--- a/serverutil/http.go
+++ b/serverutil/http.go
@@ -70,8 +70,8 @@ func Serve(h http.Handler, serverConfig *ServerConfig, addr string) (err error)
 		// down remaining clients.
 		ctx, cancel := context.WithTimeout(context.Background(), gracefulShutdownTimeout)
 		defer cancel()
-		if err := srv.Shutdown(ctx); err == context.Canceled {
-			if err := srv.Close(); err != nil {
+		if err = srv.Shutdown(ctx); err == context.Canceled {
+			if err = srv.Close(); err != nil {
 				log.Printf("error terminating server: %v", err)
 			}
 		}
@@ -80,7 +80,12 @@ func Serve(h http.Handler, serverConfig *ServerConfig, addr string) (err error)
 	}()
 	signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
 
-	if err := srv.ListenAndServe(); err != http.ErrServerClosed {
+	if tlsConfig != nil {
+		err = srv.ListenAndServeTLS("", "")
+	} else {
+		err = srv.ListenAndServe()
+	}
+	if err != http.ErrServerClosed {
 		return err
 	}