diff --git a/packages/backend/src/queue/processors/inbox.ts b/packages/backend/src/queue/processors/inbox.ts index ca063a6f3f..b319fbd381 100644 --- a/packages/backend/src/queue/processors/inbox.ts +++ b/packages/backend/src/queue/processors/inbox.ts @@ -34,6 +34,9 @@ export default async (job: Bull.Job): Promise => { const info = Object.assign({}, activity) as any; info["@context"] = undefined; logger.debug(JSON.stringify(info, null, 2)); + + if (!signature?.keyId) return `Invalid signature: ${signature}`; + //#endregion const host = toPuny(new URL(signature.keyId).hostname); diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index abb8d94e88..ab3f365705 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -718,14 +718,23 @@ async function insertNote( if (insert.hasPoll) { // Start transaction await db.transaction(async (transactionalEntityManager) => { + if (!data.poll) throw new Error("Empty poll data"); + await transactionalEntityManager.insert(Note, insert); + let expiresAt: Date | null; + if (!data.poll.expiresAt || isNaN(data.poll.expiresAt.getTime())) { + expiresAt = null; + } else { + expiresAt = data.poll.expiresAt; + } + const poll = new Poll({ noteId: insert.id, - choices: data.poll!.choices, - expiresAt: data.poll!.expiresAt, - multiple: data.poll!.multiple, - votes: new Array(data.poll!.choices.length).fill(0), + choices: data.poll.choices, + expiresAt, + multiple: data.poll.multiple, + votes: new Array(data.poll.choices.length).fill(0), noteVisibility: insert.visibility, userId: user.id, userHost: user.host,