packet: correct (over|under)flow checks on packet number decoding algorithm

See https://github.com/quicwg/base-drafts/pull/3188.
diff --git a/src/packet.rs b/src/packet.rs
index f0adad8..c9a78ac 100644
--- a/src/packet.rs
+++ b/src/packet.rs
@@ -468,11 +468,12 @@
     let pn_mask = pn_win - 1;
     let candidate_pn = (expected_pn & !pn_mask) | truncated_pn;
 
-    if candidate_pn + pn_hwin <= expected_pn {
+    if candidate_pn + pn_hwin <= expected_pn && candidate_pn < (1 << 62) - pn_win
+    {
         return candidate_pn + pn_win;
     }
 
-    if candidate_pn > expected_pn + pn_hwin && candidate_pn > pn_win {
+    if candidate_pn > expected_pn + pn_hwin && candidate_pn >= pn_win {
         return candidate_pn - pn_win;
     }