summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1995-04-29 04:30:45 +0000
committerTheodore Tso <tytso@mit.edu>1995-04-29 04:30:45 +0000
commitb45dead41a10f87d5a9ad20df211ccbc1c4b6f11 (patch)
treefec8ff6dde67927439cdf214b2fc9b0193a45a91 /src
parent56a3f3fe547ed6ff4334e3ca00f99fc5aa58907a (diff)
downloadkrb5-b45dead41a10f87d5a9ad20df211ccbc1c4b6f11.tar.gz
krb5-b45dead41a10f87d5a9ad20df211ccbc1c4b6f11.tar.xz
krb5-b45dead41a10f87d5a9ad20df211ccbc1c4b6f11.zip
adm_network.c (setup_network): Use sigaction() instead of
signal() to setup the signal handlers. This means we don't need to worry about System V signal semantics. adm_server.c (kdc_com_err_proc): Free nfmt after done using it. Makefile.in (kadmind): Use $(LD) instead of $(CC) so that we can do purify checking. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5652 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/kadmin.old/server/ChangeLog13
-rw-r--r--src/kadmin.old/server/Makefile.in2
-rw-r--r--src/kadmin.old/server/adm_network.c25
-rw-r--r--src/kadmin.old/server/adm_server.c1
4 files changed, 39 insertions, 2 deletions
diff --git a/src/kadmin.old/server/ChangeLog b/src/kadmin.old/server/ChangeLog
index d904524a58..d91fcf2097 100644
--- a/src/kadmin.old/server/ChangeLog
+++ b/src/kadmin.old/server/ChangeLog
@@ -1,3 +1,16 @@
+Sat Apr 29 00:24:48 1995 Theodore Y. Ts'o <tytso@dcl>
+
+ * adm_network.c (setup_network): Use sigaction() instead of
+ signal() to setup the signal handlers. This means we
+ don't need to worry about System V signal semantics.
+
+Fri Apr 28 21:16:10 1995 Theodore Y. Ts'o <tytso@dcl>
+
+ * adm_server.c (kdc_com_err_proc): Free nfmt after done using it.
+
+ * Makefile.in (kadmind): Use $(LD) instead of $(CC) so that we can
+ do purify checking.
+
Thu Apr 27 12:21:38 1995 Mark Eichin <eichin@cygnus.com>
* Makefile.in (kadmind): don't reference K4LIB since we don't set
diff --git a/src/kadmin.old/server/Makefile.in b/src/kadmin.old/server/Makefile.in
index 8a3b022d1f..99a422d76a 100644
--- a/src/kadmin.old/server/Makefile.in
+++ b/src/kadmin.old/server/Makefile.in
@@ -51,7 +51,7 @@ OBJS = \
all:: kadmind
kadmind: $(KDBDEPLIB) $(OBJS) $(DEPLIBS)
- $(CC) $(CFLAGS) -o kadmind $(OBJS) $(KDBLIB) $(KLIB) $(LIBS)
+ $(LD) $(CFLAGS) -o kadmind $(OBJS) $(KDBLIB) $(KLIB) $(LIBS)
install::
$(INSTALL_PROGRAM) kadmind ${DESTDIR}$(SERVER_BINDIR)/kadmind
diff --git a/src/kadmin.old/server/adm_network.c b/src/kadmin.old/server/adm_network.c
index 545784f73c..84c250ff68 100644
--- a/src/kadmin.old/server/adm_network.c
+++ b/src/kadmin.old/server/adm_network.c
@@ -89,7 +89,9 @@ do_child()
#endif
int pid, i, j;
+#ifndef OLD_SIGNALS
signal(SIGCHLD, do_child);
+#endif
pid = wait(&status);
if (pid < 0)
@@ -129,7 +131,22 @@ setup_network(context, prog)
krb5_sigtype doexit(), do_child();
struct servent *service_servent;
struct hostent *service_hostent;
-
+ int on = 1;
+#ifndef OLD_SIGNALS
+ struct sigaction new_act;
+
+ new_act.sa_handler = doexit;
+ sigemptyset(&new_act.sa_mask);
+ sigaction(SIGINT, &new_act, 0);
+ sigaction(SIGTERM, &new_act, 0);
+ sigaction(SIGHUP, &new_act, 0);
+ sigaction(SIGQUIT, &new_act, 0);
+ sigaction(SIGALRM, &new_act, 0);
+ new_act.sa_handler = SIG_IGN;
+ sigaction(SIGPIPE, &new_act, 0);
+ new_act.sa_handler = do_child;
+ sigaction(SIGCHLD, &new_act, 0);
+#else
signal(SIGINT, doexit);
signal(SIGTERM, doexit);
signal(SIGHUP, doexit);
@@ -137,6 +154,7 @@ setup_network(context, prog)
signal(SIGPIPE, SIG_IGN); /* get errors on write() */
signal(SIGALRM, doexit);
signal(SIGCHLD, do_child);
+#endif
client_server_info.name_of_service = malloc(768);
if (!client_server_info.name_of_service) {
@@ -242,6 +260,11 @@ setup_network(context, prog)
inet_ntoa( client_server_info.server_name.sin_addr ));
#endif /* DEBUG */
+ if (admin_port && admin_port != htons(ADM5_DEFAULT_PORT)) {
+ (void) setsockopt(client_server_info.server_socket, SOL_SOCKET,
+ SO_REUSEADDR, (char *)&on, sizeof(on));
+ }
+
if (bind(client_server_info.server_socket,
&client_server_info.server_name,
sizeof(client_server_info.server_name)) < 0) {
diff --git a/src/kadmin.old/server/adm_server.c b/src/kadmin.old/server/adm_server.c
index 0b49051915..31a0cd833d 100644
--- a/src/kadmin.old/server/adm_server.c
+++ b/src/kadmin.old/server/adm_server.c
@@ -427,6 +427,7 @@ kdc_com_err_proc(whoami, code, format, pvar)
strcat(nfmt, " ");
strcat(nfmt, format);
vsyslog(LOG_ERR, nfmt, pvar);
+ free(nfmt);
} else {
vsyslog(LOG_ERR, format, pvar);
}