fix stanza events

Astro created

Change summary

src/lib.rs        | 9 +++++++--
src/xmpp_codec.rs | 8 ++++----
2 files changed, 11 insertions(+), 6 deletions(-)

Detailed changes

src/lib.rs 🔗

@@ -105,6 +105,7 @@ impl Future for TcpClient {
 mod tests {
     use tokio_core::reactor::Core;
     use futures::{Future, Stream};
+    use xmpp_codec::Packet;
 
     #[test]
     fn it_works() {
@@ -118,8 +119,12 @@ mod tests {
             &addr,
             &core.handle()
         ).and_then(|stream| {
-            stream.for_each(|item| {
-                Ok(println!("stream item: {:?}", item))
+            stream.for_each(|event| {
+                match event {
+                    Packet::Stanza(el) => println!("<< {}", el),
+                    _ => println!("!! {:?}", event),
+                }
+                Ok(())
             })
         });
         core.run(client).unwrap();

src/xmpp_codec.rs 🔗

@@ -85,12 +85,12 @@ impl Codec for XMPPCodec {
         let mut new_root = None;
         let mut result = None;
         for event in &mut self.parser {
-            match &mut self.root {
-                &mut None => {
+            match self.root {
+                None => {
                     // Expecting <stream:stream>
                     match event {
                         Ok(xml::Event::ElementStart(start_tag)) => {
-                            new_root = Some(XMPPRoot::new(start_tag));
+                            self.root = Some(XMPPRoot::new(start_tag));
                             result = Some(Packet::StreamStart);
                             break
                         },
@@ -103,7 +103,7 @@ impl Codec for XMPPCodec {
                     }
                 }
 
-                &mut Some(ref mut root) => {
+                Some(ref mut root) => {
                     match root.handle_event(event) {
                         None => (),
                         Some(Ok(stanza)) => {