diff options
Diffstat (limited to 'activitypub')
-rw-r--r-- | activitypub/activity.go | 6 | ||||
-rw-r--r-- | activitypub/webfinger.go | 21 |
2 files changed, 19 insertions, 8 deletions
diff --git a/activitypub/activity.go b/activitypub/activity.go index bd57778..b05de07 100644 --- a/activitypub/activity.go +++ b/activitypub/activity.go @@ -41,7 +41,11 @@ func (activity Activity) AddFollowersTo() (Activity, error) { reqActivity := Activity{Id: e + "/followers"} aFollowers, err := reqActivity.GetCollection() if err != nil { - return activity, util.MakeError(err, "AddFollowersTo") + // Safely fail so we can continue to federate + config.Log.Printf("failed to get collection from %s: %v", reqActivity.Id, err) + continue + + // return activity, util.MakeError(err, "AddFollowersTo") } // get followers of activity actor diff --git a/activitypub/webfinger.go b/activitypub/webfinger.go index 8dce506..ff6111b 100644 --- a/activitypub/webfinger.go +++ b/activitypub/webfinger.go @@ -74,15 +74,21 @@ func FingerActor(path string) (Actor, error) { if ActorCache[actor+"@"+instance].Id != "" { nActor = ActorCache[actor+"@"+instance] } else { - resp, _ := FingerRequest(actor, instance) + resp, err := FingerRequest(actor, instance) + if err != nil { + return nActor, util.MakeError(err, "FingerActor finger request") + } if resp != nil && resp.StatusCode == 200 { defer resp.Body.Close() - body, _ := ioutil.ReadAll(resp.Body) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nActor, util.MakeError(err, "FingerActor read resp") + } if err := json.Unmarshal(body, &nActor); err != nil { - return nActor, util.MakeError(err, "FingerActor") + return nActor, util.MakeError(err, "FingerActor unmarshal") } ActorCache[actor+"@"+instance] = nActor @@ -104,15 +110,16 @@ func FingerRequest(actor string, instance string) (*http.Response, error) { resp, err := util.RouteProxy(req) if err != nil { - return resp, nil + return resp, err } var finger Webfinger if resp.StatusCode == 200 { - defer resp.Body.Close() - - body, _ := ioutil.ReadAll(resp.Body) + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return resp, err + } if err := json.Unmarshal(body, &finger); err != nil { return resp, util.MakeError(err, "FingerRequest") |