fix: remove dead upgrade-chain entries from patch-ap-mastodon-misc
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -373,22 +373,6 @@ const PATCHES = [
|
|||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
|
|
||||||
// ── patch-inbox-skip-view-activity-parse: fromExpressRequest fix ──────────
|
|
||||||
{
|
|
||||||
name: "from-express-request-activity-json-fix",
|
|
||||||
files: apPath("lib/federation-bridge.js"),
|
|
||||||
marker: "// PeerTube activity+json body fix",
|
|
||||||
oldSnippet: ` if (ct.includes("application/json")) {
|
|
||||||
body = JSON.stringify(req.body);
|
|
||||||
} else if (ct.includes("application/x-www-form-urlencoded")) {`,
|
|
||||||
newSnippet: ` // PeerTube activity+json body fix
|
|
||||||
if (ct.includes("application/json") || ct.includes("activity+json") || ct.includes("ld+json")) {
|
|
||||||
// Use original raw bytes when available (set by createFedifyMiddleware buffer guard).
|
|
||||||
// JSON.stringify() changes byte layout, breaking Fedify's HTTP Signature Digest check.
|
|
||||||
body = req._rawBody || JSON.stringify(req.body); // raw body digest fix
|
|
||||||
} else if (ct.includes("application/x-www-form-urlencoded")) {`,
|
|
||||||
},
|
|
||||||
|
|
||||||
// ── patch-inbox-skip-view-activity-parse: upgrade v1 raw-body fix ─────────
|
// ── patch-inbox-skip-view-activity-parse: upgrade v1 raw-body fix ─────────
|
||||||
{
|
{
|
||||||
name: "from-express-request-raw-body-fix",
|
name: "from-express-request-raw-body-fix",
|
||||||
@@ -427,91 +411,6 @@ const PATCHES = [
|
|||||||
req.body = JSON.parse(_raw.toString("utf8"));`,
|
req.body = JSON.parse(_raw.toString("utf8"));`,
|
||||||
},
|
},
|
||||||
|
|
||||||
// ── patch-inbox-skip-view-activity-parse: v2 guard replacing v1 ───────────
|
|
||||||
{
|
|
||||||
name: "inbox-skip-view-activity-parse-v2",
|
|
||||||
files: apPath("lib/federation-bridge.js"),
|
|
||||||
marker: "// PeerTube View parse skip v2",
|
|
||||||
oldSnippet: ` // Short-circuit PeerTube View (WatchAction) activities before Fedify
|
|
||||||
// attempts JSON-LD parsing. Fedify's vocab parser throws on PeerTube's
|
|
||||||
// Schema.org extensions (e.g. InteractionCounter), causing a
|
|
||||||
// "Failed to parse activity" error. Return 200 to prevent retries.
|
|
||||||
// PeerTube View parse skip
|
|
||||||
if (req.method === "POST" && req.body?.type === "View") {
|
|
||||||
return res.status(200).end();
|
|
||||||
}
|
|
||||||
const request = fromExpressRequest(req);`,
|
|
||||||
newSnippet: ` // Short-circuit PeerTube View (WatchAction) activities before Fedify
|
|
||||||
// attempts JSON-LD parsing. Fedify's vocab parser throws on PeerTube's
|
|
||||||
// Schema.org extensions (e.g. InteractionCounter), causing a
|
|
||||||
// "Failed to parse activity" error. Return 200 to prevent retries.
|
|
||||||
// PeerTube View parse skip v2
|
|
||||||
const _apct = req.headers["content-type"] || "";
|
|
||||||
if (
|
|
||||||
req.method === "POST" &&
|
|
||||||
!req.body &&
|
|
||||||
req.readable &&
|
|
||||||
(_apct.includes("activity+json") || _apct.includes("ld+json"))
|
|
||||||
) {
|
|
||||||
// Express doesn't parse application/activity+json, so buffer it ourselves.
|
|
||||||
const _chunks = [];
|
|
||||||
for await (const _chunk of req) {
|
|
||||||
_chunks.push(Buffer.isBuffer(_chunk) ? _chunk : Buffer.from(_chunk));
|
|
||||||
}
|
|
||||||
const _raw = Buffer.concat(_chunks); // raw body digest fix
|
|
||||||
req._rawBody = _raw; // Preserve original bytes for Fedify HTTP Signature Digest verification
|
|
||||||
try {
|
|
||||||
req.body = JSON.parse(_raw.toString("utf8"));
|
|
||||||
} catch {
|
|
||||||
req.body = {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (req.method === "POST" && req.body?.type === "View") {
|
|
||||||
return res.status(200).end();
|
|
||||||
}
|
|
||||||
const request = fromExpressRequest(req);`,
|
|
||||||
},
|
|
||||||
|
|
||||||
// ── patch-inbox-skip-view-activity-parse: v2 guard on fresh file ──────────
|
|
||||||
{
|
|
||||||
name: "inbox-skip-view-activity-parse-v2-fresh",
|
|
||||||
files: apPath("lib/federation-bridge.js"),
|
|
||||||
marker: "// PeerTube View parse skip v2",
|
|
||||||
oldSnippet: ` return async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
const request = fromExpressRequest(req);`,
|
|
||||||
newSnippet: ` return async (req, res, next) => {
|
|
||||||
try {
|
|
||||||
// Short-circuit PeerTube View (WatchAction) activities before Fedify
|
|
||||||
// attempts JSON-LD parsing. Fedify's vocab parser throws on PeerTube's
|
|
||||||
// Schema.org extensions (e.g. InteractionCounter), causing a
|
|
||||||
// "Failed to parse activity" error. Return 200 to prevent retries.
|
|
||||||
// PeerTube View parse skip v2
|
|
||||||
const _apct = req.headers["content-type"] || "";
|
|
||||||
if (
|
|
||||||
req.method === "POST" &&
|
|
||||||
!req.body &&
|
|
||||||
req.readable &&
|
|
||||||
(_apct.includes("activity+json") || _apct.includes("ld+json"))
|
|
||||||
) {
|
|
||||||
// Express doesn't parse application/activity+json, so buffer it ourselves.
|
|
||||||
const _chunks = [];
|
|
||||||
for await (const _chunk of req) {
|
|
||||||
_chunks.push(Buffer.isBuffer(_chunk) ? _chunk : Buffer.from(_chunk));
|
|
||||||
}
|
|
||||||
const _raw = Buffer.concat(_chunks); // raw body digest fix
|
|
||||||
req._rawBody = _raw; // Preserve original bytes for Fedify HTTP Signature Digest verification
|
|
||||||
try {
|
|
||||||
req.body = JSON.parse(_raw.toString("utf8"));
|
|
||||||
} catch {
|
|
||||||
req.body = {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (req.method === "POST" && req.body?.type === "View") {
|
|
||||||
return res.status(200).end();
|
|
||||||
}
|
|
||||||
const request = fromExpressRequest(req);`,
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// ── Run standard patches ───────────────────────────────────────────────────────
|
// ── Run standard patches ───────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user