Module: wine Branch: refs/heads/master Commit: 4ec9e110b0c7d9966382d6d3ace1fa28ea6c1085 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=4ec9e110b0c7d9966382d6d3...
Author: Alexandre Julliard julliard@winehq.org Date: Sun May 28 18:27:02 2006 +0200
server: Return an error for invalid requests instead of killing the client process.
---
server/request.c | 28 +++++++++++++++------------- 1 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/server/request.c b/server/request.c index c1a32f1..c6b4472 100644 --- a/server/request.c +++ b/server/request.c @@ -52,9 +52,12 @@ #ifdef HAVE_POLL_H #include <poll.h> #endif
+#include "ntstatus.h" +#define WIN32_NO_STATUS #include "windef.h" #include "winbase.h" #include "wincon.h" +#include "winternl.h" #include "wine/library.h"
#include "file.h" @@ -277,23 +280,22 @@ static void call_req_handler( struct thr if (debug_level) trace_request();
if (req < REQ_NB_REQUESTS) - { req_handlers[req]( ¤t->req, &reply ); - if (current) + else + set_error( STATUS_NOT_IMPLEMENTED ); + + if (current) + { + if (current->reply_fd) { - if (current->reply_fd) - { - reply.reply_header.error = current->error; - reply.reply_header.reply_size = current->reply_size; - if (debug_level) trace_reply( req, &reply ); - send_reply( &reply ); - } - else fatal_protocol_error( current, "no reply fd for request %d\n", req ); + reply.reply_header.error = current->error; + reply.reply_header.reply_size = current->reply_size; + if (debug_level) trace_reply( req, &reply ); + send_reply( &reply ); } - current = NULL; - return; + else fatal_protocol_error( current, "no reply fd for request %d\n", req ); } - fatal_protocol_error( current, "bad request %d\n", req ); + current = NULL; }
/* read a request from a thread */