diff --git a/picoquic/frames.c b/picoquic/frames.c
index 3a9be3acbb70b27441acfa5f393db3fd96eeaa1a..b447703aace61b986747b4e54261cc3349e3a7f4 100644
--- a/picoquic/frames.c
+++ b/picoquic/frames.c
@@ -1287,6 +1287,11 @@ void picoquic_check_spurious_retransmission(picoquic_cnx_t* cnx,
                 if (max_reorder_gap > old_path->max_reorder_gap) {
                     old_path->max_reorder_gap = max_reorder_gap;
                 }
+
+                if (cnx->congestion_alg != NULL ) {
+                    cnx->congestion_alg->alg_notify(old_path, picoquic_congestion_notification_spurious_repeat,
+                        0, 0, p->sequence_number, current_time);
+                }
             }
 
             cnx->nb_spurious++;
diff --git a/picoquic/newreno.c b/picoquic/newreno.c
index 01ffa05fd5d6ad72d2bd1511854056bf42d0bf9a..e5c3ae2493a16ca96865283889795f781daec4c6 100644
--- a/picoquic/newreno.c
+++ b/picoquic/newreno.c
@@ -110,6 +110,11 @@ void picoquic_newreno_notify(picoquic_path_t* path_x,
                 picoquic_newreno_enter_recovery(path_x, notification, nr_state, current_time);
                 break;
             case picoquic_congestion_notification_spurious_repeat:
+                /* Immediately exit the previous recovery */
+                if (path_x->cwin < 2 * nr_state->ssthresh) {
+                    path_x->cwin = 2 * nr_state->ssthresh;
+                    nr_state->alg_state = picoquic_newreno_alg_congestion_avoidance;
+                }
                 break;
             case picoquic_congestion_notification_rtt_measurement:
                 /* TODO: consider using RTT increases as signal to get out of slow start */
diff --git a/picoquictest/tls_api_test.c b/picoquictest/tls_api_test.c
index ba8b0bb628ffd8f34b2a082dfee5bdbceca53e0a..3a368b58c44585aa7bced035e9ed9b293bc861e6 100644
--- a/picoquictest/tls_api_test.c
+++ b/picoquictest/tls_api_test.c
@@ -1416,7 +1416,7 @@ int tls_api_very_long_max_test()
 
 int tls_api_very_long_with_err_test()
 {
-    return tls_api_one_scenario_test(test_scenario_very_long, sizeof(test_scenario_very_long), 0x30000, 128000, 0, 0, 5000000, NULL, NULL);
+    return tls_api_one_scenario_test(test_scenario_very_long, sizeof(test_scenario_very_long), 0x30000, 128000, 0, 0, 4000000, NULL, NULL);
 }
 
 int tls_api_very_long_congestion_test()