}
func (t *Torrent) setInfo(info *metainfo.Info) error {
- if t.info != nil {
- return errors.New("info already set")
- }
if err := validateInfo(info); err != nil {
return fmt.Errorf("bad info: %s", err)
}
if err := bencode.Unmarshal(b, &info); err != nil {
return fmt.Errorf("error unmarshalling info bytes: %s", err)
}
+ t.metadataBytes = b
+ t.metadataCompletedChunks = nil
+ if t.info != nil {
+ return nil
+ }
if err := t.setInfo(&info); err != nil {
return err
}
- t.metadataBytes = b
- t.metadataCompletedChunks = nil
t.onSetInfo()
return nil
}