Changeset aae5881 in Klonkt for src/routes/activitypub.js


Ignore:
Timestamp:
08/10/2026 08:14:13 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
86ec01b
Parents:
75f2897
Message:

De thread-melding wijst nu naar de juiste partij

Bart opende een post van boiert.eu en las "Replies could not be loaded from
your server" terwijl onze server het prima deed: de BRON weigerde. Het was een
friends-only post van een account dat hij 's ochtends nog volgde en nu niet
meer, en Klonkt geeft een niet-publieke note alleen aan followers -- boiert
weigerde dus terecht, met 404, ook op het ondertekende verzoek.

signedGetJson slikte die status ("if (!r.ok) return null"), dus getThread wist
niet WAAROM het misging en de route kon het niet zeggen. Nu geeft hij de status
door aan wie erom vraagt, en getThread draagt hem als sourceStatus.

De route splitst daarop: 401/403/404/410 is een besluit van die server (niet
gedeeld, of weg) en blijft 404 'not shared by source'; al het andere, inclusief
een status die we niet eens kregen, wordt 502 'source unreachable'. Zonder dat
onderscheid vervang je een verkeerde schuldige door een andere gok.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/activitypub.js

    r75f2897 raae5881  
    938938  const isWard = (() => { try { return Guardianship.listGuardians(auth.site.slug).length > 0; } catch { return false; } })();
    939939  const uit = await AP.getThread(auth.site.slug, objectUri);
    940   if (!uit.found) return res.status(404).json({ error: 'note not reachable' });
     940  if (!uit.found) {
     941    // WIENS schuld is dit? De oude melding zei "jouw server kon het niet
     942    // laden" terwijl onze server het prima deed en de BRON weigerde -- dat
     943    // wees naar de verkeerde partij (Barts melding, 10-8: een post van een
     944    // account dat hij vanochtend nog volgde, en dat nu niet meer).
     945    // 401/403/404/410 is een besluit van die server; al het andere, inclusief
     946    // een status die we niet eens kregen, is een storing.
     947    const geweigerd = [401, 403, 404, 410].includes(uit.sourceStatus);
     948    return res.status(geweigerd ? 404 : 502)
     949      .json({ error: geweigerd ? 'not shared by source' : 'source unreachable', sourceStatus: uit.sourceStatus || undefined });
     950  }
    941951  // De poortstand komt uit de kolom (shaer-9y2): expliciete 0/1 van de
    942952  // guardians wint, de automatiek is dicht-voor-een-ward. Dicht is de KRING,
Note: See TracChangeset for help on using the changeset viewer.