@@ -18,6 +18,8 @@ import (
18
18
19
19
"golang.org/x/xerrors"
20
20
21
+ "cdr.dev/slog"
22
+
21
23
"github.com/charmbracelet/lipgloss"
22
24
"github.com/kirsle/configdir"
23
25
"github.com/mattn/go-isatty"
@@ -28,7 +30,6 @@ import (
28
30
"github.com/coder/coder/cli/cliui"
29
31
"github.com/coder/coder/cli/config"
30
32
"github.com/coder/coder/cli/deployment"
31
- "github.com/coder/coder/coderd"
32
33
"github.com/coder/coder/coderd/gitauth"
33
34
"github.com/coder/coder/codersdk"
34
35
)
@@ -105,11 +106,10 @@ func Core() []*cobra.Command {
105
106
}
106
107
}
107
108
109
+ type ServerFunc func (ctx context.Context , options interface {}) (interface {}, io.Closer , error )
110
+
108
111
func AGPL () []* cobra.Command {
109
- all := append (Core (), Server (deployment .NewViper (), func (_ context.Context , o * coderd.Options ) (* coderd.API , io.Closer , error ) {
110
- api := coderd .New (o )
111
- return api , api , nil
112
- }))
112
+ all := append (Core (), Server (deployment .NewViper (), serverFunc ()))
113
113
return all
114
114
}
115
115
@@ -724,3 +724,26 @@ func dumpHandler(ctx context.Context) {
724
724
}
725
725
}
726
726
}
727
+
728
+ func serveHandler (ctx context.Context , logger slog.Logger , handler http.Handler , addr , name string ) (closeFunc func ()) {
729
+ logger .Debug (ctx , "http server listening" , slog .F ("addr" , addr ), slog .F ("name" , name ))
730
+
731
+ // ReadHeaderTimeout is purposefully not enabled. It caused some issues with
732
+ // websockets over the dev tunnel.
733
+ // See: https://github.com/coder/coder/pull/3730
734
+ //nolint:gosec
735
+ srv := & http.Server {
736
+ Addr : addr ,
737
+ Handler : handler ,
738
+ }
739
+ go func () {
740
+ err := srv .ListenAndServe ()
741
+ if err != nil && ! xerrors .Is (err , http .ErrServerClosed ) {
742
+ logger .Error (ctx , "http server listen" , slog .F ("name" , name ), slog .Error (err ))
743
+ }
744
+ }()
745
+
746
+ return func () {
747
+ _ = srv .Close ()
748
+ }
749
+ }
0 commit comments