diff --git a/cli.go b/cli.go index 7348683e..127e37f5 100644 --- a/cli.go +++ b/cli.go @@ -121,8 +121,12 @@ func (h *CLIHandler) Auth(c *api.Client, m map[string]string) (*api.Secret, erro } // Set up callback handler - doneCh := make(chan loginResp) - http.HandleFunc("/oidc/callback", callbackHandler(c, mount, clientNonce, doneCh)) + doneCh := make(chan loginResp, 2) + mux := http.NewServeMux() + mux.HandleFunc("/oidc/callback", callbackHandler(c, mount, clientNonce, doneCh)) + srv := &http.Server{Handler: mux} + srv.SetKeepAlivesEnabled(false) + defer srv.Close() listener, err := net.Listen("tcp", listenAddress+":"+port) if err != nil { @@ -146,7 +150,7 @@ func (h *CLIHandler) Auth(c *api.Client, m map[string]string) (*api.Secret, erro // Start local server go func() { - err := http.Serve(listener, nil) + err := srv.Serve(listener) if err != nil && err != http.ErrServerClosed { doneCh <- loginResp{nil, err} }