aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vnet/session/session.c7
-rw-r--r--src/vnet/tcp/tcp_output.c4
-rw-r--r--src/vppinfra/tw_timer_template.c2
3 files changed, 9 insertions, 4 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c
index e486c2b0326..7131f51cdda 100644
--- a/src/vnet/session/session.c
+++ b/src/vnet/session/session.c
@@ -459,9 +459,7 @@ session_enqueue_notify (stream_session_t * s, u8 block)
return 0;
}
- /* Get session's server */
app = application_get_if_valid (s->app_index);
-
if (PREDICT_FALSE (app == 0))
{
clib_warning ("invalid s->app_index = %d", s->app_index);
@@ -509,7 +507,10 @@ session_dequeue_notify (stream_session_t * s)
application_t *app;
svm_queue_t *q;
- app = application_get (s->app_index);
+ app = application_get_if_valid (s->app_index);
+ if (PREDICT_FALSE (!app))
+ return -1;
+
if (application_is_builtin (app))
return 0;
diff --git a/src/vnet/tcp/tcp_output.c b/src/vnet/tcp/tcp_output.c
index 7c113458d54..b3c39b11b30 100644
--- a/src/vnet/tcp/tcp_output.c
+++ b/src/vnet/tcp/tcp_output.c
@@ -1306,6 +1306,8 @@ tcp_prepare_retransmit_segment (tcp_connection_t * tc, u32 offset,
ASSERT (n_bytes == max_deq_bytes);
b[0]->current_length = n_bytes;
tcp_push_hdr_i (tc, *b, tc->state, /* compute opts */ 0, /* burst */ 0);
+ if (seq_gt (tc->snd_nxt, tc->snd_una_max))
+ tc->snd_una_max = tc->snd_nxt;
}
/* Split mss into multiple buffers */
else
@@ -1369,6 +1371,8 @@ tcp_prepare_retransmit_segment (tcp_connection_t * tc, u32 offset,
}
tcp_push_hdr_i (tc, *b, tc->state, /* compute opts */ 0, /* burst */ 0);
+ if (seq_gt (tc->snd_nxt, tc->snd_una_max))
+ tc->snd_una_max = tc->snd_nxt;
}
ASSERT (n_bytes > 0);
diff --git a/src/vppinfra/tw_timer_template.c b/src/vppinfra/tw_timer_template.c
index da40e2c0b3e..c96c329c931 100644
--- a/src/vppinfra/tw_timer_template.c
+++ b/src/vppinfra/tw_timer_template.c
@@ -157,7 +157,7 @@ timer_remove (TWT (tw_timer) * pool, TWT (tw_timer) * elt)
elt->prev = elt->next = ~0;
}
-static void
+static inline void
timer_add (TWT (tw_timer_wheel) * tw, TWT (tw_timer) * t, u64 interval)
{
#if TW_TIMER_WHEELS > 1