code: func (p *Listener) Accept() (net.Conn, error) {
  	// Get the underlying connection
  	conn, err := p.Listener.Accept()
  	if err != nil {
  		return nil, err
  	}
  	var useConnAddr bool
  	if p.SourceCheck != nil {
  		allowed, err := p.SourceCheck(conn.RemoteAddr())
  		if err != nil {
  			return nil, err
  		}
  		if !allowed {
  			useConnAddr = true
  		}
  	}
  	newConn := NewConn(conn, p.ProxyHeaderTimeout)
  	newConn.useConnAddr = useConnAddr
  	return newConn, nil
  }
docs: // Accept waits for and returns the next connection to the listener.