MCPcopy Index your code
hub / github.com/coder/coder / ServeHandler

Function ServeHandler

cli/agent.go:567–592  ·  view source on GitHub ↗
(ctx context.Context, logger slog.Logger, handler http.Handler, addr, name string)

Source from the content-addressed store, hash-verified

565}
566
567func ServeHandler(ctx context.Context, logger slog.Logger, handler http.Handler, addr, name string) (closeFunc func()) {
568 // ReadHeaderTimeout is purposefully not enabled. It caused some issues with
569 // websockets over the dev tunnel.
570 // See: https://github.com/coder/coder/pull/3730
571 //nolint:gosec
572 srv := &http.Server{
573 Addr: addr,
574 Handler: handler,
575 }
576 go func() {
577 ln, err := net.Listen("tcp", addr)
578 if err != nil {
579 logger.Error(ctx, "http server listen", slog.F("name", name), slog.F("addr", addr), slog.Error(err))
580 return
581 }
582 defer ln.Close()
583 logger.Info(ctx, "http server listening", slog.F("addr", ln.Addr()), slog.F("name", name))
584 if err := srv.Serve(ln); err != nil && !xerrors.Is(err, http.ErrServerClosed) {
585 logger.Error(ctx, "http server serve", slog.F("addr", ln.Addr()), slog.F("name", name), slog.Error(err))
586 }
587 }()
588
589 return func() {
590 _ = srv.Close()
591 }
592}
593
594// extractPort handles different url strings.
595// - localhost:6060

Callers 14

proxyServerMethod · 0.92
enablePrometheusFunction · 0.85
ServerMethod · 0.85
scaletestChatMethod · 0.85
scaletestTaskStatusMethod · 0.85
scaletestLLMMockMethod · 0.85
scaletestBridgeMethod · 0.85
scaletestPrebuildsMethod · 0.85
workspaceAgentFunction · 0.85

Calls 8

ServeMethod · 0.95
CloseMethod · 0.95
ListenMethod · 0.65
CloseMethod · 0.65
ErrorMethod · 0.45
InfoMethod · 0.45
AddrMethod · 0.45
IsMethod · 0.45

Tested by

no test coverage detected