func TestServeConnClientGone(t *testing.T) { control, conn := net.Pipe() cnConn := connutil.CloseNotifyConn(conn) clientGone := false dialer = dialerFunc(func(_, _ string) (net.Conn, error) { if clientGone { err := errors.New("dial after client gone") t.Error(err) return nil, err } if err := control.Close(); err != nil { t.Fatal(err) } <-cnConn.(http.CloseNotifier).CloseNotify() clientGone = true return nil, &dialErr{} }) fn := func() []string { return []string{"127.0.0.1:0", "127.0.0.1:0"} } prox := NewReverseProxy(fn, nil, false) prox.ServeConn(context.Background(), cnConn) }
func (r *tcpRoute) ServeConn(conn net.Conn) { r.rp.ServeConn(context.Background(), connutil.CloseNotifyConn(conn)) }
func (s *tcpService) ServeConn(conn net.Conn) { s.rp.ServeConn(context.Background(), connutil.CloseNotifyConn(conn)) }