chiark / gitweb /
wip rx, fix, mime
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 2 Aug 2021 02:17:29 +0000 (03:17 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 2 Aug 2021 02:17:29 +0000 (03:17 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/prelude.rs
src/slip.rs

index 3b1bed55e2ed14fe29f2de73c369bbefd681afd6..e95aa9c7cf17f2e47461151b0401ae157217aada 100644 (file)
@@ -53,10 +53,10 @@ pub use anyhow::Error as AE;
 pub use ErrorKind as EK;
 pub use PacketError as PE;
 
-pub const SLIP_END:     u8 = 0o300;
-pub const SLIP_ESC:     u8 = 0o333;
-pub const SLIP_ESC_END: u8 = 0o334;
-pub const SLIP_ESC_ESC: u8 = 0o335;
+pub const SLIP_END:     u8 = 0o300; // c0
+pub const SLIP_ESC:     u8 = 0o333; // db
+pub const SLIP_ESC_END: u8 = 0o334; // dc
+pub const SLIP_ESC_ESC: u8 = 0o335; // dd
 pub const SLIP_MIME_ESC: u8 = b'-';
 
 pub use base64::STANDARD as BASE64_CONFIG;
index c9e3aa849b4629f32ffef6dc36316c65375bc7ad..ab9005455b10ceb030972a3868827a71e0aad4b0 100644 (file)
@@ -62,8 +62,8 @@ pub fn check<AC, EH, OUT, M: SlipMime>(
         }
         if Some(was_mime) != M::CONV_TO {
           let c = match walk.get(i+1) {
-            Some(&SLIP_ESC_END) => SLIP_ESC,
-            Some(&SLIP_ESC_ESC) => SLIP_END,
+            Some(&SLIP_ESC_ESC) => SLIP_ESC,
+            Some(&SLIP_ESC_END) => SLIP_END,
             _ => throw!(PacketError::SLIP),
           };
           let _ = wheader.write(&[c]);
@@ -160,6 +160,7 @@ fn mime_slip_to_mime() {
   const MTU: u32 = 10;
 
   fn chk<M: SlipMime>(i: &[u8], exp_p: &[&[u8]], exp_e: &[PacketError]) {
+    dbg!(M::CONV_TO, DumpHex(i));
     let mut got_e = vec![];
     let mut got_p = vec![];
     check::<_,_,_,M>(MTU, i, &mut got_p, |_|Ok(()), |e| got_e.push(e));
@@ -187,4 +188,11 @@ fn mime_slip_to_mime() {
      ( &[b'x'; 20],
     &[             ],
     &[ PE::MTU { len: 20, mtu: MTU } ]);
+
+  chk::<SlipNoConv>
+     ( &[ SLIP_END, SLIP_ESC, SLIP_ESC_END, b'-',     b'X' ],
+    &[           &[ SLIP_ESC, SLIP_ESC_END, b'-',     b'X' ] ],
+    &[ PE::Empty, ]);
 }
+
+