diff --git a/rumqttc/src/state.rs b/rumqttc/src/state.rs index 408741e35..81541e46d 100644 --- a/rumqttc/src/state.rs +++ b/rumqttc/src/state.rs @@ -165,6 +165,8 @@ impl MqttState { &mut self, packet: Incoming, ) -> Result, StateError> { + self.events.push_back(Event::Incoming(packet.clone())); + let outgoing = match &packet { Incoming::PingResp => self.handle_incoming_pingresp()?, Incoming::Publish(publish) => self.handle_incoming_publish(publish)?, @@ -179,7 +181,6 @@ impl MqttState { return Err(StateError::WrongPacket); } }; - self.events.push_back(Event::Incoming(packet)); self.last_incoming = Instant::now(); Ok(outgoing) diff --git a/rumqttc/src/v5/state.rs b/rumqttc/src/v5/state.rs index 854aa7b0f..115191034 100644 --- a/rumqttc/src/v5/state.rs +++ b/rumqttc/src/v5/state.rs @@ -65,7 +65,7 @@ pub enum StateError { #[error("Connection failed with reason '{reason:?}' ")] ConnFail { reason: ConnectReturnCode }, #[error("Connection closed by peer abruptly")] - ConnectionAborted + ConnectionAborted, } impl From for StateError { @@ -217,6 +217,8 @@ impl MqttState { &mut self, mut packet: Incoming, ) -> Result, StateError> { + self.events.push_back(Event::Incoming(packet.to_owned())); + let outgoing = match &mut packet { Incoming::PingResp(_) => self.handle_incoming_pingresp()?, Incoming::Publish(publish) => self.handle_incoming_publish(publish)?, @@ -234,7 +236,6 @@ impl MqttState { } }; - self.events.push_back(Event::Incoming(packet)); self.last_incoming = Instant::now(); Ok(outgoing) }