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.";
// (...)
});
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:
This code:
should be in front of: https://github.com/phpinnacle/ridge/blob/adcced8abecc26ec26c407fb18e3ef59bcb06594/src/Client.php#L122-L124 and should respond appropriately depending on the reason for closing the connection. If we pass the wrong vhost
replyCode
is530
(decimal) andreplyText
"NOT_ALLOWED - vhost unknown-vhost not found"
.Additionally, the status change to
STATE_DISCONNECTING
andSTATE_NOT_CONNECTED
is missing in the code below. https://github.com/phpinnacle/ridge/blob/adcced8abecc26ec26c407fb18e3ef59bcb06594/src/Client.php#L126-L141