code: func (f *lightFetcher) checkKnownNode(p *peer, n *fetcherTreeNode) bool {
  	if n.known {
  		return true
  	}
  	td := f.chain.GetTd(n.hash, n.number)
  	if td == nil {
  		return false
  	}
  	header := f.chain.GetHeader(n.hash, n.number)
  	// check the availability of both header and td because reads are not protected by chain db mutex
  	// Note: returning false is always safe here
  	if header == nil {
  		return false
  	}
  
  	fp := f.peers[p]
  	if fp == nil {
  		p.Log().Debug("Unknown peer to check known nodes")
  		return false
  	}
  	if !f.checkAnnouncedHeaders(fp, []*types.Header{header}, []*big.Int{td}) {
  		p.Log().Debug("Inconsistent announcement")
  		go f.pm.removePeer(p.id)
  	}
  	if fp.confirmedTd != nil {
  		f.updateMaxConfirmedTd(fp.confirmedTd)
  	}
  	return n.known
  }
docs: // checkKnownNode checks if a block tree node is known (downloaded and validated)
  // If it was not known previously but found in the database, sets its known flag