summaryrefslogtreecommitdiff
path: root/server/client.c
diff options
context:
space:
mode:
authorGravatar Richard Basch <probe@mit.edu>1993-09-24 17:18:14 +0000
committerGravatar Richard Basch <probe@mit.edu>1993-09-24 17:18:14 +0000
commit77a043be93791f3ce530a7f099fd3031fec2d47e (patch)
tree7025daa421e411f790fb8e8566cc93d2978f3277 /server/client.c
parent2b0141e72ae1795c8234e9dd65234f534388a3b9 (diff)
Changed bcopy/bzero to _BCOPY/_BZERO macros (defined in <zephyr/zephyr_conf.h>)
Added POSIX signal handling
Diffstat (limited to 'server/client.c')
-rw-r--r--server/client.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/server/client.c b/server/client.c
index 0e888dd..f68de28 100644
--- a/server/client.c
+++ b/server/client.c
@@ -65,7 +65,11 @@ client_register(notice, who, client, server, wantdefaults)
register ZHostList_t *hlp = server->zs_hosts;
register ZHostList_t *hlp2;
register ZClientList_t *clist;
+#ifdef POSIX
+ sigset_t mask, omask;
+#else
int omask;
+#endif
/* chain the client's host onto this server's host list */
@@ -111,10 +115,10 @@ client_register(notice, who, client, server, wantdefaults)
clist->zclt_client = *client;
/* initialize the struct */
- bzero((caddr_t) &(*client)->zct_sin,
+ _BZERO((caddr_t) &(*client)->zct_sin,
sizeof(struct sockaddr_in));
#ifdef KERBEROS
- bzero((caddr_t) &(*client)->zct_cblock,
+ _BZERO((caddr_t) &(*client)->zct_cblock,
sizeof((*client)->zct_cblock));
#endif
(*client)->zct_sin.sin_addr.s_addr = who->sin_addr.s_addr;
@@ -125,9 +129,19 @@ client_register(notice, who, client, server, wantdefaults)
/* chain him in to the clients list in the host list*/
+#ifdef POSIX
+ (void) sigemptyset(&mask);
+ (void) sigaddset(&mask, SIGFPE);
+ (void) sigprocmask(SIG_BLOCK, &mask, &omask);
+#else
omask = sigblock(sigmask(SIGFPE)); /* don't let db dumps start */
+#endif
xinsque(clist, hlp2->zh_clients);
+#ifdef POSIX
+ (void) sigprocmask(SIG_SETMASK, &omask, (sigset_t *)0);
+#else
(void) sigsetmask(omask);
+#endif
if (!server->zs_dumping && wantdefaults)
/* add default subscriptions only if this is not
@@ -151,7 +165,14 @@ client_deregister(client, host, flush)
int flush;
{
ZClientList_t *clients;
+#ifdef POSIX
+ sigset_t mask, omask;
+ (void) sigemptyset(&mask);
+ (void) sigaddset(&mask, SIGFPE);
+ (void) sigprocmask(SIG_BLOCK, &mask, &omask);
+#else
int omask = sigblock(sigmask(SIGFPE)); /* don't let db dumps start */
+#endif
/* release any not-acked packets in the rexmit queue */
nack_release(client);
@@ -174,7 +195,12 @@ client_deregister(client, host, flush)
free_zstring(client->zct_principal);
xfree(client);
xfree(clients);
+#ifdef POSIX
+ (void) sigprocmask(SIG_SETMASK, &omask,
+ (sigset_t *)0);
+#else
(void) sigsetmask(omask);
+#endif
return;
}
syslog(LOG_CRIT, "clt_dereg: clt not in host list");