diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2013-11-30 17:48:17 +0100 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2013-12-02 17:31:14 +0100 |
commit | b8b92e2455c2a9652e60a17dd38fc8dc031b77c3 (patch) | |
tree | ebc36971d3985d4afb135f70a38655654e130fa7 /pflocal/pflocal.c | |
parent | 9cec7a2482a68ca1ae41d65fc8b94584d5020c3f (diff) |
pflocal: improve the demuxer functions
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.
* pflocal/pflocal.c (pf_demuxer): Improve the demuxer function.
* pflocal/sserver.c (sock_demuxer): Likewise.
Diffstat (limited to 'pflocal/pflocal.c')
-rw-r--r-- | pflocal/pflocal.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/pflocal/pflocal.c b/pflocal/pflocal.c index 7a4e8d91..d51f721e 100644 --- a/pflocal/pflocal.c +++ b/pflocal/pflocal.c @@ -51,8 +51,18 @@ int trivfs_cntl_nportclasses = 1; static int pf_demuxer (mach_msg_header_t *inp, mach_msg_header_t *outp) { - extern int socket_server (mach_msg_header_t *inp, mach_msg_header_t *outp); - return socket_server (inp, outp) || trivfs_demuxer (inp, outp); + mig_routine_t socket_server_routine (mach_msg_header_t *); + + mig_routine_t routine; + if ((routine = socket_server_routine (inp)) || + (routine = NULL, trivfs_demuxer (inp, outp))) + { + if (routine) + (*routine) (inp, outp); + return TRUE; + } + else + return FALSE; } |