]> andersk Git - moira.git/blobdiff - server/mr_glue.c
removed unique check for network saddr
[moira.git] / server / mr_glue.c
index a7b4d80a1c911888fe52ccd705ccf01e374011bf..8fd1505d99f7201f21ce9a3f235ea3e4c4154c43 100644 (file)
@@ -16,13 +16,13 @@ static char *rcsid_mr_glue_c = "$Header$";
 #endif lint
 
 #include <mit-copyright.h>
-#include "mr_server.h"
 #include <sys/types.h>
 #include <sys/signal.h>
 #include <sys/wait.h>
 #include <krb_et.h>
 #include <pwd.h>
 #include "query.h"
+#include "mr_server.h"
 
 static int already_connected = 0;
 
@@ -30,7 +30,7 @@ static int already_connected = 0;
 
 static client pseudo_client;
 extern int errno;
-extern char *malloc(), *whoami;
+extern char *whoami;
 extern time_t now;
 void reapchild();
 
@@ -129,8 +129,10 @@ int mr_query(name, argc, argv, callproc, callarg)
     time(&now);
     hints.proc = callproc;
     hints.hint = callarg;
-    return mr_process_query(&pseudo_client, name, argc, argv,
-                            callback, &hints);
+    next_incremental();
+    return mr_process_query(&pseudo_client, name, argc,
+                           mr_copy_args(argv, argc), callback, &hints);
+
 }
 
 int mr_access(name, argc, argv)
@@ -139,7 +141,8 @@ int mr_access(name, argc, argv)
     char **argv;               /* Args */
 {
     time(&now);
-    return mr_check_access(&pseudo_client, name, argc, argv);
+    return mr_check_access(&pseudo_client, name, argc,
+                          mr_copy_args(argv, argc));
 }
 
 int mr_query_internal(argc, argv, callproc, callarg)
@@ -153,8 +156,9 @@ int mr_query_internal(argc, argv, callproc, callarg)
     time(&now);
     hints.proc = callproc;
     hints.hint = callarg;
-    return mr_process_query(&pseudo_client, argv[0], argc-1, argv+1,
-                            callback, &hints);
+    next_incremental();
+    return mr_process_query(&pseudo_client, argv[0], argc-1,
+                           mr_copy_args(argv+1, argc-1), callback, &hints);
 }
 
 int mr_access_internal(argc, argv)
@@ -162,7 +166,8 @@ int mr_access_internal(argc, argv)
     char **argv;
 {
     time(&now);
-    return mr_check_access(&pseudo_client, argv[0], argc-1, argv+1);
+    return mr_check_access(&pseudo_client, argv[0], argc-1,
+                          mr_copy_args(argv+1, argc-1));
 }
 
 mr_shutdown(why)
@@ -213,6 +218,10 @@ void reapchild()
     int pid;
 
     while ((pid = wait3(&status, WNOHANG, (struct rusage *)0)) > 0) {
+       if (pid == inc_pid) {
+           inc_running = 0;
+           next_incremental();
+       }
        if  (status.w_termsig != 0 || status.w_retcode != 0)
          com_err(whoami, 0, "%d: child exits with signal %d status %d",
                  pid, status.w_termsig, status.w_retcode);
This page took 0.033432 seconds and 4 git commands to generate.