commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 54/98: pfinet: improve the pfinet_demuxer function


From: Samuel Thibault
Subject: [hurd] 54/98: pfinet: improve the pfinet_demuxer function
Date: Tue, 14 Jan 2014 02:00:02 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit 9cec7a2482a68ca1ae41d65fc8b94584d5020c3f
Author: Justus Winter <address@hidden>
Date:   Sat Nov 30 17:32:01 2013 +0100

    pfinet: improve the pfinet_demuxer function
    
    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.
    
    * pfinet/main.c (pfinet_demuxer): Improve the demuxer function.
---
 pfinet/main.c | 52 +++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 35 insertions(+), 17 deletions(-)

diff --git a/pfinet/main.c b/pfinet/main.c
index c952719..dce1600 100644
--- a/pfinet/main.c
+++ b/pfinet/main.c
@@ -77,11 +77,11 @@ pfinet_demuxer (mach_msg_header_t *inp,
                mach_msg_header_t *outp)
 {
   struct port_info *pi;
-  extern int io_server (mach_msg_header_t *, mach_msg_header_t *);
-  extern int socket_server (mach_msg_header_t *, mach_msg_header_t *);
-  extern int startup_notify_server (mach_msg_header_t *, mach_msg_header_t *);
-  extern int pfinet_server (mach_msg_header_t *, mach_msg_header_t *);
-  extern int iioctl_server (mach_msg_header_t *, mach_msg_header_t *);
+  mig_routine_t io_server_routine (mach_msg_header_t *);
+  mig_routine_t socket_server_routine (mach_msg_header_t *);
+  mig_routine_t pfinet_server_routine (mach_msg_header_t *);
+  mig_routine_t iioctl_server_routine (mach_msg_header_t *);
+  mig_routine_t startup_notify_server_routine (mach_msg_header_t *);
 
   /* We have several classes in one bucket, which need to be demuxed
      differently.  */
@@ -90,20 +90,38 @@ pfinet_demuxer (mach_msg_header_t *inp,
   if (pi)
     {
       ports_port_deref (pi);
-      
-      return (io_server (inp, outp)
-             || socket_server (inp, outp)
-             || pfinet_server (inp, outp)
-             || iioctl_server (inp, outp)
-             || trivfs_demuxer (inp, outp)
-             || startup_notify_server (inp, outp));
+
+      mig_routine_t routine;
+      if ((routine = io_server_routine (inp)) ||
+          (routine = socket_server_routine (inp)) ||
+          (routine = pfinet_server_routine (inp)) ||
+          (routine = iioctl_server_routine (inp)) ||
+          (routine = NULL, trivfs_demuxer (inp, outp)) ||
+          (routine = startup_notify_server_routine (inp)))
+        {
+          if (routine)
+            (*routine) (inp, outp);
+          return TRUE;
+        }
+      else
+        return FALSE;
     }
   else
-    return (socket_server (inp, outp)
-           || pfinet_server (inp, outp)
-           || iioctl_server (inp, outp)
-           || trivfs_demuxer (inp, outp)
-           || startup_notify_server (inp, outp));
+    {
+      mig_routine_t routine;
+      if ((routine = socket_server_routine (inp)) ||
+          (routine = pfinet_server_routine (inp)) ||
+          (routine = iioctl_server_routine (inp)) ||
+          (routine = NULL, trivfs_demuxer (inp, outp)) ||
+          (routine = startup_notify_server_routine (inp)))
+        {
+          if (routine)
+            (*routine) (inp, outp);
+          return TRUE;
+        }
+      else
+        return FALSE;
+    }
 }
 
 /* The system is going down; destroy all the extant port rights.  That

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]