Use a separate FIFO pair for server requests that don't need to pass a
file descriptor.
Associate file descriptors with handles on the server side so that we
don't need to pass the fd every time the client wants to use it.
diff --git a/server/debugger.c b/server/debugger.c
index c88f82e..7f84410 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -118,7 +118,7 @@
/* documented: THREAD_GET_CONTEXT | THREAD_SET_CONTEXT | THREAD_SUSPEND_RESUME */
if ((handle = alloc_handle( debugger, thread, THREAD_ALL_ACCESS, FALSE )) == -1)
{
- close_handle( debugger, event->data.info.create_process.process );
+ close_handle( debugger, event->data.info.create_process.process, NULL );
return 0;
}
event->data.info.create_process.thread = handle;
@@ -128,8 +128,8 @@
/* the doc says write access too, but this doesn't seem a good idea */
((handle = alloc_handle( debugger, process->exe.file, GENERIC_READ, FALSE )) == -1))
{
- close_handle( debugger, event->data.info.create_process.process );
- close_handle( debugger, event->data.info.create_process.thread );
+ close_handle( debugger, event->data.info.create_process.process, NULL );
+ close_handle( debugger, event->data.info.create_process.thread, NULL );
return 0;
}
event->data.info.create_process.file = handle;
@@ -316,17 +316,17 @@
switch(event->data.code)
{
case CREATE_THREAD_DEBUG_EVENT:
- close_handle( debugger, event->data.info.create_thread.handle );
+ close_handle( debugger, event->data.info.create_thread.handle, NULL );
break;
case CREATE_PROCESS_DEBUG_EVENT:
if (event->data.info.create_process.file != -1)
- close_handle( debugger, event->data.info.create_process.file );
- close_handle( debugger, event->data.info.create_process.thread );
- close_handle( debugger, event->data.info.create_process.process );
+ close_handle( debugger, event->data.info.create_process.file, NULL );
+ close_handle( debugger, event->data.info.create_process.thread, NULL );
+ close_handle( debugger, event->data.info.create_process.process, NULL );
break;
case LOAD_DLL_DEBUG_EVENT:
if (event->data.info.load_dll.handle != -1)
- close_handle( debugger, event->data.info.load_dll.handle );
+ close_handle( debugger, event->data.info.load_dll.handle, NULL );
break;
}
}