vlib_cli_output (vm, "Socket clients");
vlib_cli_output (vm, "%20s %8s", "Name", "Fildesc");
/* *INDENT-OFF* */
- pool_foreach (reg, sm->registration_pool,
- ({
+ pool_foreach (reg, sm->registration_pool)
+ {
if (reg->registration_type == REGISTRATION_TYPE_SOCKET_SERVER) {
f = vl_api_registration_file (reg);
vlib_cli_output (vm, "%20s %8d", reg->name, f->file_descriptor);
}
- }));
+ }
/* *INDENT-ON* */
}
error = clib_file_write (cf);
unix_save_error (&unix_main, error);
+ /* Make sure cf not removed in clib_file_write */
+ cf = vl_api_registration_file (rp);
+ if (!cf)
+ {
+ clib_warning ("cf removed");
+ vl_msg_api_free ((void *) elem);
+ return;
+ }
+
/* If we didn't finish sending everything, wait for tx space */
if (vec_len (sock_rp->output_vector) > 0
&& !(cf->flags & UNIX_FILE_DATA_AVAILABLE_TO_WRITE))
template.write_function = vl_socket_write_ready;
template.error_function = vl_socket_error_ready;
template.file_descriptor = fd;
+ template.description = format (0, "socksrv");
template.private_data = rp - socket_main.registration_pool;
rp->registration_type = REGISTRATION_TYPE_SOCKET_SERVER;
}
if (regp->registration_type != REGISTRATION_TYPE_SOCKET_SERVER)
{
- rv = -31; /* VNET_API_ERROR_INVALID_REGISTRATION */
- goto reply;
+ clib_warning ("Invalid registration");
+ return;
}
/*
/* Send the magic "here's your sign (aka fd)" socket message */
cf = vl_api_registration_file (regp);
+ if (!cf)
+ {
+ clib_warning ("cf removed");
+ return;
+ }
/* Wait for reply to be consumed before sending the fd */
while (tries-- > 0)
template.read_function = socksvr_accept_ready;
template.write_function = socksvr_bogus_write;
template.file_descriptor = sock->fd;
+ template.description = format (0, "socksvr %s", sock->config);
template.private_data = rp - sm->registration_pool;
rp->clib_file_index = clib_file_add (fm, &template);
{
u32 index;
/* *INDENT-OFF* */
- pool_foreach (rp, sm->registration_pool, ({
+ pool_foreach (rp, sm->registration_pool) {
vl_api_registration_del_file (rp);
index = rp->vl_api_registration_pool_index;
vl_socket_free_registration_index (index);
- }));
+ }
/* *INDENT-ON* */
}