uf->private_data = mif->if_index << 1;
mif->connection = pending_conn->connection;
pool_put (mm->pending_conns, pending_conn);
+ pending_conn = 0;
memif_connect (vm, mif);
{
DEBUG_UNIX_LOG ("Failed to send connection response");
error = clib_error_return_unix (0, "send fd %d", fd);
- memif_disconnect (vm, mif);
+ if (pending_conn)
+ memif_remove_pending_conn (pending_conn);
+ else
+ memif_disconnect (vm, mif);
+ }
+ if (retval > 0)
+ {
+ if (shm_fd >= 0)
+ close (shm_fd);
+ if (int_fd >= 0)
+ close (int_fd);
}
return error;
}
if (PREDICT_FALSE (n_trace > 0))
{
- if (b0)
- {
- memif_input_trace_t *tr;
- vlib_trace_buffer (vm, node, next0, b0,
- /* follow_chain */ 0);
- vlib_set_trace_count (vm, node, --n_trace);
- tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
- tr->next_index = next0;
- tr->hw_if_index = mif->hw_if_index;
- tr->ring = rid;
- }
-
- if (n_trace && b1)
+ /* b0 */
+ memif_input_trace_t *tr;
+ vlib_trace_buffer (vm, node, next0, b0,
+ /* follow_chain */ 0);
+ vlib_set_trace_count (vm, node, --n_trace);
+ tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
+ tr->next_index = next0;
+ tr->hw_if_index = mif->hw_if_index;
+ tr->ring = rid;
+
+ if (n_trace)
{
+ /* b1 */
memif_input_trace_t *tr;
vlib_trace_buffer (vm, node, next1, b1,
/* follow_chain */ 0);
if (PREDICT_FALSE (n_trace > 0))
{
- if (b0)
- {
- memif_input_trace_t *tr;
- vlib_trace_buffer (vm, node, next0, b0,
- /* follow_chain */ 0);
- vlib_set_trace_count (vm, node, --n_trace);
- tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
- tr->next_index = next0;
- tr->hw_if_index = mif->hw_if_index;
- tr->ring = rid;
- }
+ memif_input_trace_t *tr;
+ vlib_trace_buffer (vm, node, next0, b0,
+ /* follow_chain */ 0);
+ vlib_set_trace_count (vm, node, --n_trace);
+ tr = vlib_add_trace (vm, node, b0, sizeof (*tr));
+ tr->next_index = next0;
+ tr->hw_if_index = mif->hw_if_index;
+ tr->ring = rid;
}