summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2013-12-04 10:21:41 +0100
committerJustus Winter <4winter@informatik.uni-hamburg.de>2013-12-04 12:04:49 +0100
commitcc2464c4969f232ed6efb305adfdb69b2176ff34 (patch)
treeec59703d15e3bb16d586c8fbd3d0c8ca4f35e22d
parent03e6f1fa6846dd860d0cd7babee62b8767cade30 (diff)
utils: improve the auth_demuxer function in fakeauth.c
Handle multiple request types as recommended by the Mach Server Writer's Guide section 4, subsection "Handling Multiple Request Types". This avoids initializing the reply message in every X_server function. The reply message has already been properly initialized in libports, so there is no need to call mig_reply_setup. * utils/fakeauth.c (auth_demuxer): Improve the demuxer function.
-rw-r--r--utils/fakeauth.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/utils/fakeauth.c b/utils/fakeauth.c
index 154bf8e4..2c72c894 100644
--- a/utils/fakeauth.c
+++ b/utils/fakeauth.c
@@ -302,11 +302,20 @@ S_interrupt_operation (mach_port_t port, mach_port_seqno_t seqno)
static int
auth_demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp)
{
- extern int auth_server (mach_msg_header_t *inp, mach_msg_header_t *outp);
- extern int interrupt_server (mach_msg_header_t *inp, mach_msg_header_t *);
- return (auth_server (inp, outp) ||
- interrupt_server (inp, outp) ||
- ports_notify_server (inp, outp));
+ mig_routine_t auth_server_routine (mach_msg_header_t *);
+ mig_routine_t interrupt_server_routine (mach_msg_header_t *);
+ mig_routine_t ports_notify_server_routine (mach_msg_header_t *);
+
+ mig_routine_t routine;
+ if ((routine = auth_server_routine (inp)) ||
+ (routine = interrupt_server_routine (inp)) ||
+ (routine = ports_notify_server_routine (inp)))
+ {
+ (*routine) (inp, outp);
+ return TRUE;
+ }
+ else
+ return FALSE;
}