diff options
Diffstat (limited to 'src/vnet/ip/reass/ip6_full_reass.c')
-rw-r--r-- | src/vnet/ip/reass/ip6_full_reass.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/vnet/ip/reass/ip6_full_reass.c b/src/vnet/ip/reass/ip6_full_reass.c index 15ee3e3775d..f1a3606d41a 100644 --- a/src/vnet/ip/reass/ip6_full_reass.c +++ b/src/vnet/ip/reass/ip6_full_reass.c @@ -508,16 +508,17 @@ again: if (!clib_bihash_search_48_8 (&rm->hash, &kv->kv, &kv->kv)) { - reass = - pool_elt_at_index (rm->per_thread_data - [kv->v.memory_owner_thread_index].pool, - kv->v.reass_index); if (vm->thread_index != kv->v.memory_owner_thread_index) { *do_handoff = 1; - return reass; + return NULL; } + reass = + pool_elt_at_index (rm->per_thread_data + [kv->v.memory_owner_thread_index].pool, + kv->v.reass_index); + if (now > reass->last_heard + rm->timeout) { ip6_full_reass_on_timeout (vm, node, rm, reass, icmp_bi); |