diff --git a/embassy/src/embassy_sunset.rs b/embassy/src/embassy_sunset.rs
index 80b22b8ea40a629f1ec2c07068b1ee3de89cb51e..8191dbd07390a3935b2c03b828ddecf747fefd3f 100644
--- a/embassy/src/embassy_sunset.rs
+++ b/embassy/src/embassy_sunset.rs
@@ -85,13 +85,16 @@ impl<'a> EmbassySunset<'a> {
                 // TODO: make sunset read directly from socket, no intermediate buffer.
                 let mut buf = [0; 1024];
                 let l = rsock.read(&mut buf).await.expect("TODO handle read error");
+                if l == 0 {
+                    trace!("net EOF");
+                    break
+                }
                 let mut buf = &buf[..l];
                 while buf.len() > 0 {
                     let n = self.write(&buf).await?;
                     buf = &buf[n..];
                 }
             }
-            #[allow(unreachable_code)]
             Ok::<_, sunset::Error>(())
         };