packet: don't unwrap()
diff --git a/src/lib.rs b/src/lib.rs
index 2ffc716..83fcc61 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1611,7 +1611,8 @@
         let pn_len = packet::pkt_num_len(pn)?;
 
         // The AEAD overhead at the current encryption level.
-        let overhead = self.pkt_num_spaces[epoch].overhead();
+        let overhead =
+            self.pkt_num_spaces[epoch].overhead().ok_or(Error::Done)?;
 
         let hdr = Header {
             ty: pkt_type,
@@ -3378,8 +3379,8 @@
 
         hdr.to_bytes(&mut b)?;
 
-        let payload_len =
-            frames.iter().fold(0, |acc, x| acc + x.wire_len()) + space.overhead();
+        let payload_len = frames.iter().fold(0, |acc, x| acc + x.wire_len()) +
+            space.overhead().unwrap();
 
         if pkt_type != packet::Type::Short {
             let len = pn_len + payload_len;
diff --git a/src/packet.rs b/src/packet.rs
index 494e154..6d81718 100644
--- a/src/packet.rs
+++ b/src/packet.rs
@@ -673,8 +673,8 @@
         self.ack_elicited = false;
     }
 
-    pub fn overhead(&self) -> usize {
-        self.crypto_seal.as_ref().unwrap().alg().tag_len()
+    pub fn overhead(&self) -> Option<usize> {
+        Some(self.crypto_seal.as_ref()?.alg().tag_len())
     }
 
     pub fn ready(&self) -> bool {