~xenrox/faceit_checker

48956db6f88ac2fea7079fd72048249dbab2559f — Thorben Günther 9 months ago 0d28c56
Shut down gracefully
1 files changed, 22 insertions(+), 3 deletions(-)

M faceit.go
M faceit.go => faceit.go +22 -3
@@ 15,7 15,9 @@ import (
	"log/slog"
	"net/http"
	"os"
	"os/signal"
	"strings"
	"syscall"
	"time"

	"git.xenrox.net/~xenrox/go-utils/logging"


@@ 132,6 134,9 @@ func main() {
		os.Exit(1)
	}

	ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
	defer stop()

	// TODO: Remove
	// NOTE: Disable HTTP/2
	// Programs that must disable HTTP/2 can do so by setting Transport.TLSNextProto (for clients) to a non-nil, empty map.


@@ 156,11 161,25 @@ func main() {
		ReadTimeout:  60 * time.Second,
	}

	err = srv.ListenAndServe()
	go func() {
		err = srv.ListenAndServe()
		if err != nil && err != http.ErrServerClosed {
			logger.Error("Failed to start HTTP server",
				slog.String("error", err.Error()))
			os.Exit(1)
		}
	}()

	<-ctx.Done()
	stop()

	httpShutdownContext, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()

	err = srv.Shutdown(httpShutdownContext)
	if err != nil {
		logger.Error("Failed to start HTTP server",
		logger.Error("Failed to shutdown HTTP sever",
			slog.String("error", err.Error()))
		os.Exit(1)
	}
}