L: cl.locker(),
                },
                webSeeds: make(map[string]*Peer),
+               gotMetainfoC: make(chan struct{}),
        }
        t.networkingEnabled.Set()
        t._pendingPieces.NewSet = priorityBitmapStableNewSet
 
 }
 
 // Returns a channel that is closed when the info (.Info()) for the torrent has become available.
-func (t *Torrent) GotInfo() <-chan struct{} {
+func (t *Torrent) GotInfo() (ret <-chan struct{}) {
        // TODO: We shouldn't need to lock to take a channel here, if the event is only ever set.
-       t.cl.lock()
-       defer t.cl.unlock()
-       return t.gotMetainfo.C()
+       t.nameMu.RLock()
+       ret = t.gotMetainfoC
+       t.nameMu.RUnlock()
+       return
 }
 
 // Returns the metainfo info dictionary, or nil if it's not yet available.
-func (t *Torrent) Info() *metainfo.Info {
-       t.cl.lock()
-       defer t.cl.unlock()
-       return t.info
+func (t *Torrent) Info() (info *metainfo.Info) {
+       t.nameMu.RLock()
+       info = t.info
+       t.nameMu.RUnlock()
+       return
 }
 
 // Returns a Reader bound to the torrent's data. All read calls block until the data requested is
 
        metadataCompletedChunks []bool
        metadataChanged         sync.Cond
 
-       // Set when .Info is obtained.
-       gotMetainfo missinggo.Event
+       // Closed when .Info is obtained.
+       gotMetainfoC chan struct{}
 
        readers                map[*reader]struct{}
        _readerNowPieces       bitmap.Bitmap
 }
 
 func (t *Torrent) invalidateMetadata() {
-       for i := range t.metadataCompletedChunks {
+       for i := 0; i < len(t.metadataCompletedChunks); i++ {
                t.metadataCompletedChunks[i] = false
        }
        t.nameMu.Lock()
+       t.gotMetainfoC = make(chan struct{})
        t.info = nil
        t.nameMu.Unlock()
 }
                }
        }
        t.cl.event.Broadcast()
-       t.gotMetainfo.Set()
+       close(t.gotMetainfoC)
        t.updateWantPeersEvent()
        t.pendingRequests = make(map[Request]int)
        t.tryCreateMorePieceHashers()