Skip to content

Commit 2d5c795

Browse files
committed
Fix: forbidden peers cache
1 parent 4d9ecc0 commit 2d5c795

3 files changed

Lines changed: 13 additions & 6 deletions

File tree

app/AccessControl/ForbiddenPeers.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ public static function add(string $peer, string $error): void {
2929
case 'BOTS NOT ALLOWED':
3030
case 'This is not a public channel':
3131
$peer = mb_strtolower($peer);
32-
self::$peers[$peer] = $error;
33-
self::getFilePointer()->write(self::str_putcsv([$peer, $error]) . PHP_EOL);
32+
if ((self::$peers[$peer] ?? null) !== $error) {
33+
self::$peers[$peer] = $error;
34+
self::getFilePointer()->write(self::str_putcsv([$peer, $error]) . PHP_EOL);
35+
}
3436
break;
3537
}
3638
}

app/Controller/RequestValidatorMiddleware.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,15 @@ public function __construct(
2222

2323
public function handleRequest(Request $request, RequestHandler $requestHandler): Response
2424
{
25-
$request->setAttribute('channel', self::getChannel($request));
26-
$this->validatePeer($request);
27-
return $requestHandler->handleRequest($request);
25+
$channel = self::getChannel($request);
26+
$request->setAttribute('channel', $channel);
27+
try {
28+
$this->validatePeer($request);
29+
return $requestHandler->handleRequest($request);
30+
} catch (\Throwable $exception) {
31+
ForbiddenPeers::add($channel, $exception->getMessage());
32+
throw $exception;
33+
}
2834
}
2935

3036
public static function getChannel(Request $request): string

app/Server/ErrorResponse.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use Amp\Http\Server\ErrorHandler;
77
use Amp\Http\Server\Request;
88
use Amp\Http\Server\Response;
9-
use Amp\Http\Server\Trailers;
109

1110
class ErrorResponse implements ErrorHandler
1211
{

0 commit comments

Comments
 (0)