clib_net_to_host_u16 (session->transport.rmt_port),
vppcom_proto_str (session->session_type));
+ vcl_send_session_connect (wrk, session);
+
+ if (VCL_SESS_ATTR_TEST (session->attr, VCL_SESS_ATTR_NONBLOCK))
+ return VPPCOM_EINPROGRESS;
+
/*
- * Send connect request and wait for reply from vpp
+ * Wait for reply from vpp if blocking
*/
- vcl_send_session_connect (wrk, session);
rv = vppcom_wait_for_session_state_change (session_index, STATE_CONNECT,
vcm->cfg.session_timeout);
break;
case SESSION_CTRL_EVT_CONNECTED:
connected_msg = (session_connected_msg_t *) e->data;
- vcl_session_connected_handler (wrk, connected_msg);
+ sid = vcl_session_connected_handler (wrk, connected_msg);
+ if (sid == VCL_INVALID_SESSION_INDEX)
+ break;
+ if (sid < n_bits && write_map)
+ {
+ clib_bitmap_set_no_check ((uword *) write_map, sid, 1);
+ *bits_set += 1;
+ }
break;
case SESSION_CTRL_EVT_DISCONNECTED:
disconnected_msg = (session_disconnected_msg_t *) e->data;