mirror of
https://github.com/Noratrieb/haesli.git
synced 2026-01-14 11:45:02 +01:00
minor fixes
This commit is contained in:
parent
2be26f7e49
commit
beb2187cd6
3 changed files with 17 additions and 6 deletions
|
|
@ -46,7 +46,7 @@ pub struct Connection {
|
|||
pub id: ConnectionId,
|
||||
pub peer_addr: SocketAddr,
|
||||
pub global_data: GlobalData,
|
||||
pub channels: HashMap<u16, ChannelHandle>,
|
||||
pub channels: HashMap<ChannelNum, ChannelHandle>,
|
||||
pub exclusive_queues: Vec<Queue>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ pub enum ProtocolError {
|
|||
ConException(#[from] ConException),
|
||||
#[error("{0}")]
|
||||
ChannelException(#[from] ChannelException),
|
||||
#[error("Connection must be closed")]
|
||||
CloseNow,
|
||||
#[error("Protocol negotiation failed")]
|
||||
ProtocolNegotiationFailed,
|
||||
#[error("Graceful connection closing requested")]
|
||||
GracefullyClosed,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -474,7 +474,7 @@ impl Connection {
|
|||
.unwrap()
|
||||
.lock()
|
||||
.channels
|
||||
.insert(channel_num.num(), channel_handle);
|
||||
.insert(channel_num, channel_handle);
|
||||
}
|
||||
|
||||
info!(%channel_num, "Opened new channel");
|
||||
|
|
@ -522,6 +522,7 @@ impl Connection {
|
|||
async fn negotiate_version(&mut self) -> Result<()> {
|
||||
const HEADER_SIZE: usize = 8;
|
||||
const SUPPORTED_PROTOCOL_VERSION: &[u8] = &[0, 9, 1];
|
||||
const AMQP_PROTOCOL: &[u8] = b"AMQP";
|
||||
const OWN_PROTOCOL_HEADER: &[u8] = b"AMQP\0\0\x09\x01";
|
||||
|
||||
debug!("Negotiating version");
|
||||
|
|
@ -535,8 +536,18 @@ impl Connection {
|
|||
|
||||
debug!(received_header = ?read_header_buf,"Received protocol header");
|
||||
|
||||
let protocol = &read_header_buf[0..4];
|
||||
let version = &read_header_buf[5..8];
|
||||
|
||||
if protocol != AMQP_PROTOCOL {
|
||||
self.stream
|
||||
.write_all(OWN_PROTOCOL_HEADER)
|
||||
.await
|
||||
.context("write protocol header")?;
|
||||
debug!(?protocol, "Version negotiation failed");
|
||||
return Err(ProtocolError::ProtocolNegotiationFailed.into());
|
||||
}
|
||||
|
||||
if &read_header_buf[0..5] == b"AMQP\0" && version == SUPPORTED_PROTOCOL_VERSION {
|
||||
debug!(?version, "Version negotiation successful");
|
||||
Ok(())
|
||||
|
|
@ -545,8 +556,8 @@ impl Connection {
|
|||
.write_all(OWN_PROTOCOL_HEADER)
|
||||
.await
|
||||
.context("write protocol header")?;
|
||||
debug!(?version, expected_version = ?SUPPORTED_PROTOCOL_VERSION, "Version negotiation failed, unsupported version");
|
||||
Err(ProtocolError::CloseNow.into())
|
||||
debug!(?version, expected_version = ?SUPPORTED_PROTOCOL_VERSION, "Version negotiation failed");
|
||||
Err(ProtocolError::ProtocolNegotiationFailed.into())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue