From 43758179d99cfb2670a663e6be217d676aedc17e Mon Sep 17 00:00:00 2001 From: iratqq Date: Sun, 16 Mar 2008 17:36:54 +0000 Subject: [PATCH] - remove priv_exit. - sync errno handling code from orignal of syslogd. --- trunk/src/sj3serv/main.c | 2 -- trunk/src/sj3serv/priv.c | 23 +++++------------------ trunk/src/sj3serv/sj3serv.h | 1 - 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/trunk/src/sj3serv/main.c b/trunk/src/sj3serv/main.c index ef556ee..2787d1b 100644 --- a/trunk/src/sj3serv/main.c +++ b/trunk/src/sj3serv/main.c @@ -93,7 +93,6 @@ server_terminate() { close_socket(); sj_closeall(); - priv_exit(); exit(0); } @@ -152,7 +151,6 @@ main(int argc, char **argv) close_socket(); sj_closeall(); - priv_exit(); exit(0); } diff --git a/trunk/src/sj3serv/priv.c b/trunk/src/sj3serv/priv.c index c6692ee..2fcc555 100644 --- a/trunk/src/sj3serv/priv.c +++ b/trunk/src/sj3serv/priv.c @@ -33,8 +33,7 @@ enum priv_state { }; enum cmd_types { - PRIV_GETUGID, - PRIV_EXIT + PRIV_GETUGID }; static int auth_fd = -1; @@ -166,17 +165,12 @@ priv_init() } endpwent(); break; - case PRIV_EXIT: - close(socks[0]); - _exit(1); default: fprintf(stderr, "auth unknown command %d\n", cmd); close(socks[0]); _exit(255); } } - fprintf(stderr, "auth fatal error\n"); - close(socks[0]); _exit(1); } @@ -255,11 +249,11 @@ must_write(int fd, void *buf, size_t n) static void sig_pass_to_chld(int sig) { - int oerrno = errno; + int save_errno = errno; if (child_pid != -1) kill(child_pid, sig); - errno = oerrno; + errno = save_errno; } /* When child dies, move into the shutdown state */ @@ -267,6 +261,7 @@ sig_pass_to_chld(int sig) static void sig_got_chld(int sig) { + int save_errno = errno; pid_t pid; do { @@ -274,6 +269,7 @@ sig_got_chld(int sig) if (pid == child_pid && cur_state < STATE_QUIT) cur_state = STATE_QUIT; } while (pid > 0 || (pid == -1 && errno == EINTR)); + errno = save_errno; } int @@ -309,13 +305,4 @@ priv_getugid(char *username, sj3_ugid *ugid) } } -void -priv_exit() -{ - int cmd = PRIV_EXIT; - - must_write(auth_fd, &cmd, sizeof(int)); - - return; -} diff --git a/trunk/src/sj3serv/sj3serv.h b/trunk/src/sj3serv/sj3serv.h index 7243d42..496147d 100644 --- a/trunk/src/sj3serv/sj3serv.h +++ b/trunk/src/sj3serv/sj3serv.h @@ -29,7 +29,6 @@ typedef struct { /* auth.c */ int priv_init(); -void priv_exit(); int priv_getugid(char *, sj3_ugid *);