Moved poll handling to the generic part of the server objects.
Fixed busy waiting on POLLERR events.
Merged struct client into struct thread.

diff --git a/server/handle.c b/server/handle.c
index ea6d6c8..be81511 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -69,17 +69,19 @@
 
 static const struct object_ops handle_table_ops =
 {
-    sizeof(struct handle_table),
-    handle_table_dump,
-    no_add_queue,
-    NULL,  /* should never get called */
-    NULL,  /* should never get called */
-    NULL,  /* should never get called */
-    no_read_fd,
-    no_write_fd,
-    no_flush,
-    no_get_file_info,
-    handle_table_destroy
+    sizeof(struct handle_table),     /* size */
+    handle_table_dump,               /* dump */
+    no_add_queue,                    /* add_queue */
+    NULL,                            /* remove_queue */
+    NULL,                            /* signaled */
+    NULL,                            /* satisfied */
+    NULL,                            /* get_poll_events */
+    NULL,                            /* poll_event */
+    no_read_fd,                      /* get_read_fd */
+    no_write_fd,                     /* get_write_fd */
+    no_flush,                        /* flush */
+    no_get_file_info,                /* get_file_info */
+    handle_table_destroy             /* destroy */
 };
 
 /* dump a handle table */
@@ -127,7 +129,7 @@
     struct handle_table *table;
 
     if (count < MIN_HANDLE_ENTRIES) count = MIN_HANDLE_ENTRIES;
-    if (!(table = alloc_object( &handle_table_ops )))
+    if (!(table = alloc_object( &handle_table_ops, -1 )))
         return NULL;
     table->process = process;
     table->count   = count;