Passing an incorrect vhost does not result in throwing an exception
michalzielanski opened this issue · 1 comments
michalzielanski commented
When we pass an invalid vhost, the broker sends a ConnectionCloseFrame and terminates the connection, but Ridge does not capture this frame and does not throw an exception.
Example:
use Amp\Loop;
use PHPinnacle\Ridge\Client;
Loop::run(function () {
$client = Client::create('amqp://guest:guest@localhost:5672/unknown-vhost');
yield $client->connect();
echo "Execution will never get here. Nor will an exception be thrown.";
// (...)
});
asyncCall(function () {
yield $this->await(Protocol\ConnectionCloseFrame::class);
// (...)
});
should be in front of:
Lines 122 to 124 in adcced8
and should respond appropriately depending on the reason for closing the connection.
If we pass the wrong vhost
replyCode
is 530
(decimal) and replyText
"NOT_ALLOWED - vhost unknown-vhost not found"
.
Additionally, the status change to STATE_DISCONNECTING
and STATE_NOT_CONNECTED
is missing in the code below.
Lines 126 to 141 in adcced8
mmasiukevich commented