diff options
author | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-07-10 14:27:27 -0400 |
---|---|---|
committer | Nalin Dahyabhai <nalin.dahyabhai@pobox.com> | 2008-07-10 14:27:27 -0400 |
commit | 8d0590883c5d966a55f9c03d0696b7ec67dde267 (patch) | |
tree | c347bace2383cba2874b633fea4ea9d2f3b97cd4 /src | |
parent | 35ab68574afc1bb28ddd8f53a7e1e40240e5973e (diff) | |
download | slapi-nis-8d0590883c5d966a55f9c03d0696b7ec67dde267.tar.gz slapi-nis-8d0590883c5d966a55f9c03d0696b7ec67dde267.tar.xz slapi-nis-8d0590883c5d966a55f9c03d0696b7ec67dde267.zip |
- set SO_LINGER so that we stop talking to clients when we call close()
Diffstat (limited to 'src')
-rw-r--r-- | src/disp-nis.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/disp-nis.c b/src/disp-nis.c index eafde53..2baba69 100644 --- a/src/disp-nis.c +++ b/src/disp-nis.c @@ -529,6 +529,7 @@ static struct dispatch_client * dispatch_accept_client(struct plugin_state *state, int fd) { struct dispatch_client *client; + struct linger linger; int flags; char *outbuf, *workbuf; client = malloc(sizeof(*client)); @@ -556,6 +557,9 @@ dispatch_accept_client(struct plugin_state *state, int fd) free(client); return NULL; } + linger.l_onoff = 1; + linger.l_linger = 0; + setsockopt(fd, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger)); switch (client->client_addr.ss_family) { struct sockaddr_in *sin; struct sockaddr_in6 *sin6; |