code: func (f *lightFetcher) processResponse(req fetchRequest, resp fetchResponse) bool {
  	if uint64(len(resp.headers)) != req.amount || resp.headers[0].Hash() != req.hash {
  		req.peer.Log().Debug("Response content mismatch", "requested", len(resp.headers), "reqfrom", resp.headers[0], "delivered", req.amount, "delfrom", req.hash)
  		return false
  	}
  	headers := make([]*types.Header, req.amount)
  	for i, header := range resp.headers {
  		headers[int(req.amount)-1-i] = header
  	}
  
  	if _, err := f.chain.InsertHeaderChain(headers, 1); err != nil {
  		if err == consensus.ErrFutureBlock {
  			return true
  		}
  		log.Debug("Failed to insert header chain", "err", err)
  		return false
  	}
  	tds := make([]*big.Int, len(headers))
  	for i, header := range headers {
  		td := f.chain.GetTd(header.Hash(), header.Number.Uint64())
  		if td == nil {
  			log.Debug("Total difficulty not found for header", "index", i+1, "number", header.Number, "hash", header.Hash())
  			return false
  		}
  		tds[i] = td
  	}
  	f.newHeaders(headers, tds)
  	return true
  }
docs: // processResponse processes header download request responses, returns true if successful