code: func discardInput(r io.Reader, n uint32) {
  	maxSize := uint32(10 * 1024) // 10k at a time
  	numReads := n / maxSize
  	bytesRemaining := n % maxSize
  	if n > 0 {
  		buf := make([]byte, maxSize)
  		for i := uint32(0); i < numReads; i++ {
  			io.ReadFull(r, buf)
  		}
  	}
  	if bytesRemaining > 0 {
  		buf := make([]byte, bytesRemaining)
  		io.ReadFull(r, buf)
  	}
  }
docs: // discardInput reads n bytes from reader r in chunks and discards the read
  // bytes.  This is used to skip payloads when various errors occur and helps
  // prevent rogue nodes from causing massive memory allocation through forging
  // header length.