blob: 2e0caaf1c9b5449dc5b7fed4631fd1c444dd796e [file] [log] [blame]
diff --git a/lib/quicly.c b/lib/quicly.c
index 71fa149..668677f 100644
--- a/lib/quicly.c
+++ b/lib/quicly.c
@@ -3631,10 +3631,14 @@ int quicly_send(quicly_conn_t *conn, quicly_datagram_t **packets, size_t *num_pa
* progress (i.e. due to the payload of lost packet being cancelled), then PTO for the previously sent packet. To accomodate
* that, we allow to rerun the do_send function just once.
*/
- if (s.num_packets == 0 && conn->egress.loss.alarm_at <= now) {
+ if (conn->egress.loss.alarm_at <= now) {
assert(conn->egress.loss.alarm_at == now);
- if ((ret = do_send(conn, &s)) != 0)
- return ret;
+ if (s.num_packets == 0) {
+ if ((ret = do_send(conn, &s)) != 0)
+ return ret;
+ } else {
+ conn->egress.loss.alarm_at = now + 1;
+ }
}
assert_consistency(conn, 1);