diff --git a/bindings/ud.go b/bindings/ud.go index ee7774cbebf2ab4523aaa713c3e0d6912e94ac27..9332ea975b90db019389bfe569a73ccbaa40880d 100644 --- a/bindings/ud.go +++ b/bindings/ud.go @@ -413,9 +413,9 @@ type UdMultiLookupCallback interface { } type lookupResp struct { - id *id.ID - contact contact.Contact - err error + Id *id.ID + Contact contact.Contact + Err error } // MultiLookupUD returns the public key of all passed in IDs as known by the @@ -458,26 +458,27 @@ func MultiLookupUD(e2eID int, udContact []byte, cb UdMultiLookupCallback, return err } + jww.INFO.Printf("ud.MultiLookupUD(%s, %s)", idList, p.Timeout) + respCh := make(chan lookupResp, len(idList)) for _, uid := range idList { - localID := uid.DeepCopy() callback := func(c contact.Contact, err error) { respCh <- lookupResp{ - id: localID, - contact: c, - err: err, + Id: uid, + Contact: c, + Err: err, } } - go func() { + go func(localID *id.ID) { _, _, err := ud.Lookup(user.api, c, callback, localID, p) if err != nil { respCh <- lookupResp{ - id: localID, - contact: contact.Contact{}, - err: err, + Id: localID, + Contact: contact.Contact{}, + Err: err, } } - }() + }(uid.DeepCopy()) } @@ -487,14 +488,14 @@ func MultiLookupUD(e2eID int, udContact []byte, cb UdMultiLookupCallback, var errorString string for numReturned := 0; numReturned < len(idList); numReturned++ { response := <-respCh - if response.err != nil { - failedIDs = append(failedIDs, response.id) - marshaledContactList = append( - marshaledContactList, response.contact.Marshal()) - } else { + if response.Err != nil { + failedIDs = append(failedIDs, response.Id) errorString = errorString + fmt.Sprintf("Failed to lookup id %s: %+v", - response.id, response.err) + response.Id, response.Err) + } else { + marshaledContactList = append( + marshaledContactList, response.Contact.Marshal()) } } diff --git a/ud/lookup.go b/ud/lookup.go index 569dc5b99578e9487c350028eb5e4649cbf8efc1..867c2900cbf598be9e041f1de1244a9379e0c919 100644 --- a/ud/lookup.go +++ b/ud/lookup.go @@ -44,30 +44,6 @@ func Lookup(user udE2e, return lookup(net, rng, uid, grp, udContact, callback, p) } -// BatchLookup performs a Lookup operation on a list of user IDs. -// The lookup performs a callback on each lookup on the returned contact object -// constructed from the response. -func BatchLookup(udContact contact.Contact, - net udCmix, callback lookupCallback, - rng csprng.Source, - uids []*id.ID, grp *cyclic.Group, - p single.RequestParams) { - jww.INFO.Printf("ud.BatchLookup(%s, %s)", uids, p.Timeout) - - for _, uid := range uids { - go func(localUid *id.ID) { - _, _, err := lookup(net, rng, localUid, grp, - udContact, callback, p) - if err != nil { - jww.WARN.Printf("Failed batch lookup on user %s: %v", - localUid, err) - } - }(uid) - } - - return -} - // lookup is a helper function which sends a lookup request to the user discovery // service. It will construct a contact object off of the returned public key. // The callback will be called on that contact object.