diff options
author | Richard Basch <probe@mit.edu> | 1993-09-24 17:18:14 +0000 |
---|---|---|
committer | Richard Basch <probe@mit.edu> | 1993-09-24 17:18:14 +0000 |
commit | 77a043be93791f3ce530a7f099fd3031fec2d47e (patch) | |
tree | 7025daa421e411f790fb8e8566cc93d2978f3277 /server/client.c | |
parent | 2b0141e72ae1795c8234e9dd65234f534388a3b9 (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.c | 30 |
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"); |