{
vlsh_to_session_and_worker_index (vlsh, &session_index, &wrk_index);
if (wrk_index != vppcom_worker_index ())
- clib_warning ("migration currently not supported");
+ clib_warning (
+ "migration for %d vlsh %d from %d to %d not supported", fd, vlsh,
+ wrk_index, vppcom_worker_index ());
else
*vclb = clib_bitmap_set (*vclb, session_index, 1);
}
if (mp->context != wrk->wrk_index)
VDBG (0, "wrong context");
+ VDBG (0, "unlisten reply freeing %d[0x%llx]", s->session_index, mp->handle);
vcl_session_table_del_vpp_handle (wrk, mp->handle);
vcl_session_free (wrk, s);
}
s->session_index, s->vpp_handle, s->session_state,
vcl_session_state_str (s->session_state));
rx_fifo = vcl_session_is_ct (s) ? s->ct_rx_fifo : s->rx_fifo;
- if (svm_fifo_is_empty_cons (rx_fifo))
+ /* If application closed, e.g., mt app, or no data return error */
+ if (s->session_state == VCL_STATE_CLOSED ||
+ svm_fifo_is_empty_cons (rx_fifo))
return vcl_session_closed_error (s);
}