X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlibmemory%2Fsocket_api.c;h=26be8d095221bab24c170dcca2a16774842db7d0;hb=dfd426c2c83f69e95fe8dab5b4827825230f1d7c;hp=6559f733393563c5ea84e44d3408d344ec44bcdb;hpb=a2eb507055c9467997711548d63420216ab7b4e9;p=vpp.git diff --git a/src/vlibmemory/socket_api.c b/src/vlibmemory/socket_api.c index 6559f733393..26be8d09522 100644 --- a/src/vlibmemory/socket_api.c +++ b/src/vlibmemory/socket_api.c @@ -87,7 +87,6 @@ vl_sock_api_dump_clients (vlib_main_t * vm, api_main_t * am) vlib_cli_output (vm, "Socket clients"); vlib_cli_output (vm, "%20s %8s", "Name", "Fildesc"); - /* *INDENT-OFF* */ pool_foreach (reg, sm->registration_pool) { if (reg->registration_type == REGISTRATION_TYPE_SOCKET_SERVER) { @@ -95,7 +94,6 @@ vl_sock_api_dump_clients (vlib_main_t * vm, api_main_t * am) vlib_cli_output (vm, "%20s %8d", reg->name, f->file_descriptor); } } -/* *INDENT-ON* */ } vl_api_registration_t * @@ -220,6 +218,12 @@ static void socket_cleanup_pending_remove_registration_cb (u32 *preg_index) { vl_api_registration_t *rp = vl_socket_get_registration (*preg_index); + if (!rp) + { + /* Might already have gone */ + return; + } + clib_file_main_t *fm = &file_main; u32 pending_remove_file_index = vl_api_registration_file_index (rp); @@ -282,6 +286,10 @@ vl_socket_read_ready (clib_file_t * uf) } rp = vl_socket_get_registration (reg_index); + if (!rp) + { + return 0; + } /* Ignore unprocessed_input for now, n describes input_buffer for now. */ n = read (uf->file_descriptor, socket_main.input_buffer, @@ -402,7 +410,7 @@ vl_socket_write_ready (clib_file_t * uf) while (remaining_bytes > 0) { bytes_to_send = remaining_bytes > 4096 ? 4096 : remaining_bytes; - n = write (uf->file_descriptor, p, bytes_to_send); + n = send (uf->file_descriptor, p, bytes_to_send, MSG_NOSIGNAL); if (n < 0) { if (errno == EAGAIN) @@ -517,7 +525,6 @@ vl_api_sockclnt_create_t_handler (vl_api_sockclnt_create_t * mp) rp->response = htonl (rv); rp->count = htons (nmsg); - /* *INDENT-OFF* */ hash_foreach_pair (hp, am->msg_index_by_name_and_crc, ({ rp->message_table[i].index = htons(hp->value[0]); @@ -527,7 +534,6 @@ vl_api_sockclnt_create_t_handler (vl_api_sockclnt_create_t * mp) 64-1 /* chars to copy, without zero byte. */); i++; })); - /* *INDENT-ON* */ vl_api_send_msg (regp, (u8 *) rp); } @@ -845,13 +851,11 @@ socket_exit (vlib_main_t * vm) if (sm->registration_pool) { u32 index; - /* *INDENT-OFF* */ 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* */ } return 0;