- (void) unix_shared_memory_queue_add_nolock (q, elem);
-}
-
-u32
-vl_api_get_msg_index (u8 * name_and_crc)
-{
- api_main_t *am = &api_main;
- uword *p;
-
- if (am->msg_index_by_name_and_crc)
- {
- p = hash_get_mem (am->msg_index_by_name_and_crc, name_and_crc);
- if (p)
- return p[0];
- }
- return ~0;
-}
-
-static inline vl_api_registration_t *
-vl_api_client_index_to_registration_internal (u32 handle)
-{
- vl_api_registration_t **regpp;
- vl_api_registration_t *regp;
- api_main_t *am = &api_main;
- u32 index;
-
- index = vl_msg_api_handle_get_index (handle);
- if ((am->shmem_hdr->application_restarts & VL_API_EPOCH_MASK)
- != vl_msg_api_handle_get_epoch (handle))
- {
- vl_msg_api_increment_missing_client_counter ();
- return 0;
- }
-
- regpp = am->vl_clients + index;
-
- if (pool_is_free (am->vl_clients, regpp))
- {
- vl_msg_api_increment_missing_client_counter ();
- return 0;
- }
- regp = *regpp;
- return (regp);
+ /*
+ * Announce a probable binary API client bug:
+ * some client's input queue is stuffed.
+ * The situation may be recoverable, or not.
+ */
+ if (PREDICT_FALSE
+ (am->vl_clients /* vpp side */ && (q->cursize == q->maxsize)))
+ clib_warning ("WARNING: client input queue at %llx is stuffed...", q);
+ (void) svm_queue_add (q, elem, 0 /* nowait */ );