code: func (t *Torrent) setMetadataSize(bytes int) (err error) {
  	if t.haveInfo() {
  		// We already know the correct metadata size.
  		return
  	}
  	if bytes <= 0 || bytes > 10000000 { // 10MB, pulled from my ass.
  		return errors.New("bad size")
  	}
  	if t.metadataBytes != nil && len(t.metadataBytes) == int(bytes) {
  		return
  	}
  	t.metadataBytes = make([]byte, bytes)
  	t.metadataCompletedChunks = make([]bool, (bytes+(1<<14)-1)/(1<<14))
  	t.metadataChanged.Broadcast()
  	for c := range t.conns {
  		c.requestPendingMetadata()
  	}
  	return
  }
docs: // TODO: Propagate errors to disconnect peer.