summaryrefslogtreecommitdiff
path: root/server/server.c
diff options
context:
space:
mode:
authorGravatar Richard Basch <probe@mit.edu>1993-09-24 19:27:55 +0000
committerGravatar Richard Basch <probe@mit.edu>1993-09-24 19:27:55 +0000
commitceaee694898604741edfff0223f1a6b9225a14b0 (patch)
tree694b6e11852a6f093e3ae0ed3396ec17393c6ead /server/server.c
parent001a74d81568b9db761a6f02691984a3d5ff6d17 (diff)
Changed bcopy/bzero to _BCOPY/_BZERO (defined in <zephyr/zephyr_conf.h>)
Added POSIX signal handling
Diffstat (limited to 'server/server.c')
-rw-r--r--server/server.c54
1 files changed, 40 insertions, 14 deletions
diff --git a/server/server.c b/server/server.c
index afff8ae..2a7a6aa 100644
--- a/server/server.c
+++ b/server/server.c
@@ -235,7 +235,7 @@ server_init()
syslog(LOG_CRIT, "srv_nacklist malloc");
abort();
}
- bzero((caddr_t) srv_nacklist, sizeof(ZNotAcked_t));
+ _BZERO((caddr_t) srv_nacklist, sizeof(ZNotAcked_t));
srv_nacklist->q_forw = srv_nacklist->q_back = srv_nacklist;
return;
@@ -291,8 +291,8 @@ server_reset()
return;
}
- (void) bzero((char *)ok_list_old, nservers * sizeof(int));
- (void) bzero((char *)ok_list_new, num_servers * sizeof(int));
+ (void) _BZERO((char *)ok_list_old, nservers * sizeof(int));
+ (void) _BZERO((char *)ok_list_new, num_servers * sizeof(int));
/* reset timers--pointers will move */
for (j = 1; j < nservers; j++) { /* skip limbo */
@@ -347,7 +347,7 @@ server_reset()
servers[0] = otherservers[0]; /* copy limbo */
srv = (int*) xmalloc (nservers * sizeof (int));
- bzero (srv, nservers * sizeof (int));
+ _BZERO (srv, nservers * sizeof (int));
/* copy the kept servers */
for (j = 1; j < nservers; j++) { /* skip limbo */
@@ -534,7 +534,7 @@ server_dispatch(notice, auth, who)
return(ZERR_NONE);
}
/* set up a who for the real origin */
- bzero((caddr_t) &newwho, sizeof(newwho));
+ _BZERO((caddr_t) &newwho, sizeof(newwho));
newwho.sin_family = AF_INET;
newwho.sin_addr.s_addr = notice->z_sender_addr.s_addr;
newwho.sin_port = notice->z_port;
@@ -592,16 +592,30 @@ server_register(notice, auth, who)
ZServerDesc_t *temp;
register int i;
long timerval;
- int old_mask;
+#ifdef POSIX
+ sigset_t mask, omask;
+#else
+ int omask;
+#endif
- old_mask = sigblock(sigmask(SIGFPE));
+#ifdef POSIX
+ (void) sigemptyset(&mask);
+ (void) sigaddset(&mask, SIGFPE); /* don't let db dumps start */
+ (void) sigprocmask(SIG_BLOCK, &mask, &omask);
+#else
+ omask = sigblock(sigmask(SIGFPE));
+#endif
if (who->sin_port != sock_sin.sin_port) {
#if 0
zdbug((LOG_DEBUG, "srv_register wrong port %d",
ntohs(who->sin_port)));
#endif
- sigsetmask(old_mask);
+#ifdef POSIX
+ (void) sigprocmask(SIG_SETMASK, &omask, (sigset_t *)0);
+#else
+ (void) sigsetmask(omask);
+#endif
return 1;
}
/* Not yet... talk to ken about authenticators */
@@ -610,18 +624,26 @@ server_register(notice, auth, who)
#if 0
zdbug((LOG_DEBUG, "srv_register unauth"));
#endif
- sigsetmask(old_mask);
+#ifdef POSIX
+ (void) sigprocmask(SIG_SETMASK, &omask, (sigset_t *)0);
+#else
+ (void) sigsetmask(omask);
+#endif
return 1;
}
-#endif notdef
+#endif /* notdef */
/* OK, go ahead and set him up. */
temp = (ZServerDesc_t *)xmalloc((unsigned) ((nservers + 1) * sizeof(ZServerDesc_t)));
if (!temp) {
syslog(LOG_CRIT, "srv_reg malloc");
- sigsetmask(old_mask);
+#ifdef POSIX
+ (void) sigprocmask(SIG_SETMASK, &omask, (sigset_t *)0);
+#else
+ (void) sigsetmask(omask);
+#endif
return 1;
}
- bcopy((caddr_t) otherservers, (caddr_t) temp, nservers * sizeof(ZServerDesc_t));
+ _BCOPY((caddr_t) otherservers, (caddr_t) temp, nservers * sizeof(ZServerDesc_t));
xfree(otherservers);
otherservers = temp;
/* don't reschedule limbo's timer, so start i=1 */
@@ -644,7 +666,11 @@ server_register(notice, auth, who)
zdbug((LOG_DEBUG, "srv %s is %s", otherservers[nservers].addr,
srv_states[(int) otherservers[nservers].zs_state]));
#endif
- sigsetmask(old_mask);
+#ifdef POSIX
+ (void) sigprocmask(SIG_SETMASK, &omask, (sigset_t *)0);
+#else
+ (void) sigsetmask(omask);
+#endif
return 0;
}
#endif
@@ -1155,7 +1181,7 @@ get_server_addrs(number)
for (cpp = server_hosts, addr = addrs, i = 0; *cpp; cpp++) {
hp = gethostbyname(*cpp);
if (hp) {
- bcopy((caddr_t)hp->h_addr,
+ _BCOPY((caddr_t)hp->h_addr,
(caddr_t) addr,
sizeof(struct in_addr));
addr++, i++;