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>
This commit is contained in:
parent
9cd784cdee
commit
85f46f88c6
|
@ -26,6 +26,8 @@
|
||||||
- Fix: ファイルがサイズの制限を超えてアップロードされた際にエラーを返さなかった問題を修正
|
- Fix: ファイルがサイズの制限を超えてアップロードされた際にエラーを返さなかった問題を修正
|
||||||
- Fix: 外部ページを解析する際に、ページに紐づけられた関連リソースも読み込まれてしまう問題を修正
|
- Fix: 外部ページを解析する際に、ページに紐づけられた関連リソースも読み込まれてしまう問題を修正
|
||||||
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/commit/26e0412fbb91447c37e8fb06ffb0487346063bb8)
|
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/commit/26e0412fbb91447c37e8fb06ffb0487346063bb8)
|
||||||
|
- Fix: `Retry-After`ヘッダーが送信されなかった問題を修正
|
||||||
|
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/commit/8a982c61c01909e7540ff1be9f019df07c3f0624)
|
||||||
|
|
||||||
## 2024.8.0
|
## 2024.8.0
|
||||||
|
|
||||||
|
|
|
@ -64,15 +64,6 @@ export class ApiCallService implements OnApplicationShutdown {
|
||||||
let statusCode = err.httpStatusCode;
|
let statusCode = err.httpStatusCode;
|
||||||
if (err.httpStatusCode === 401) {
|
if (err.httpStatusCode === 401) {
|
||||||
reply.header('WWW-Authenticate', 'Bearer realm="Misskey"');
|
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') {
|
} else if (err.code === 'RATE_LIMIT_EXCEEDED') {
|
||||||
const info: unknown = err.info;
|
const info: unknown = err.info;
|
||||||
const unixEpochInSeconds = Date.now();
|
const unixEpochInSeconds = Date.now();
|
||||||
|
@ -83,6 +74,15 @@ export class ApiCallService implements OnApplicationShutdown {
|
||||||
} else {
|
} else {
|
||||||
this.logger.warn(`rate limit information has unexpected type ${typeof(err.info?.reset)}`);
|
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) {
|
} else if (!statusCode) {
|
||||||
statusCode = 500;
|
statusCode = 500;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue