MCPcopy
hub / github.com/fabiolb/fabio / Serve

Method Serve

proxy/tcp/server.go:65–100  ·  view source on GitHub ↗
(l net.Listener)

Source from the content-addressed store, hash-verified

63}
64
65func (s *Server) Serve(l net.Listener) error {
66 defer l.Close()
67
68 s.mu.Lock()
69 s.listeners = append(s.listeners, l)
70 s.mu.Unlock()
71
72 for {
73 c, err := l.Accept()
74 if err != nil {
75 return err
76 }
77 c = &conn{
78 c: c,
79 ReadTimeout: s.ReadTimeout,
80 WriteTimeout: s.WriteTimeout,
81 }
82 s.mu.Lock()
83 if s.conns == nil {
84 s.conns = map[net.Conn]bool{}
85 }
86 s.conns[c] = true
87 s.mu.Unlock()
88
89 go func() {
90 defer func() {
91 c.Close()
92 s.mu.Lock()
93 delete(s.conns, c)
94 s.mu.Unlock()
95 }()
96
97 s.Handler.ServeTCP(c)
98 }()
99 }
100}
101
102func (s *Server) closeListeners() {
103 s.mu.Lock()

Callers 2

ListenAndServeMethod · 0.95
ListenAndServeTLSMethod · 0.95

Implementers 3

InetAfTCPProxyServerproxy/inetaf_tcpproxy.go
gRPCServerproxy/grpc_handler.go
Serverproxy/tcp/server.go

Calls 3

CloseMethod · 0.65
ServeTCPMethod · 0.65
AcceptMethod · 0.45

Tested by

no test coverage detected