summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/ApiCallService.ts
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2024-09-21 18:20:45 +0900
committerGitHub <noreply@github.com>2024-09-21 18:20:45 +0900
commit85f46f88c6e91bd9f2b247684fe8b0807bfe3a5d (patch)
tree9156bc8e03bb34bdcfe586fed58be420a40eecc3 /packages/backend/src/server/api/ApiCallService.ts
parentci: api.jsonの差分がない時は折りたたみを生成しないよう... (diff)
downloadsharkey-85f46f88c6e91bd9f2b247684fe8b0807bfe3a5d.tar.gz
sharkey-85f46f88c6e91bd9f2b247684fe8b0807bfe3a5d.tar.bz2
sharkey-85f46f88c6e91bd9f2b247684fe8b0807bfe3a5d.zip
fix(backend): `Retry-After`ヘッダーが実際には送信されなかった問題を修正 (#14597)
* move rate-limit-exceeded error reporting, earlier a rate-limit-exceeded error has `kind:'client'`, so the branch that adds the `Retry-After` would never get taken (cherry picked from commit 8a982c61c01909e7540ff1be9f019df07c3f0624) * Update Changelog * fix * indent --------- Co-authored-by: dakkar <dakkar@thenautilus.net>
Diffstat (limited to 'packages/backend/src/server/api/ApiCallService.ts')
-rw-r--r--packages/backend/src/server/api/ApiCallService.ts18
1 files changed, 9 insertions, 9 deletions
diff --git a/packages/backend/src/server/api/ApiCallService.ts b/packages/backend/src/server/api/ApiCallService.ts
index f95c272757..e8d56ee50a 100644
--- a/packages/backend/src/server/api/ApiCallService.ts
+++ b/packages/backend/src/server/api/ApiCallService.ts
@@ -64,15 +64,6 @@ export class ApiCallService implements OnApplicationShutdown {
let statusCode = err.httpStatusCode;
if (err.httpStatusCode === 401) {
reply.header('WWW-Authenticate', 'Bearer realm="Misskey"');
- } else if (err.kind === 'client') {
- reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="invalid_request", error_description="${err.message}"`);
- statusCode = statusCode ?? 400;
- } else if (err.kind === 'permission') {
- // (ROLE_PERMISSION_DENIEDは関係ない)
- if (err.code === 'PERMISSION_DENIED') {
- reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="insufficient_scope", error_description="${err.message}"`);
- }
- statusCode = statusCode ?? 403;
} else if (err.code === 'RATE_LIMIT_EXCEEDED') {
const info: unknown = err.info;
const unixEpochInSeconds = Date.now();
@@ -83,6 +74,15 @@ export class ApiCallService implements OnApplicationShutdown {
} else {
this.logger.warn(`rate limit information has unexpected type ${typeof(err.info?.reset)}`);
}
+ } else if (err.kind === 'client') {
+ reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="invalid_request", error_description="${err.message}"`);
+ statusCode = statusCode ?? 400;
+ } else if (err.kind === 'permission') {
+ // (ROLE_PERMISSION_DENIEDは関係ない)
+ if (err.code === 'PERMISSION_DENIED') {
+ reply.header('WWW-Authenticate', `Bearer realm="Misskey", error="insufficient_scope", error_description="${err.message}"`);
+ }
+ statusCode = statusCode ?? 403;
} else if (!statusCode) {
statusCode = 500;
}