summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-07-10 14:27:27 -0400
committerNalin Dahyabhai <nalin.dahyabhai@pobox.com>2008-07-10 14:27:27 -0400
commit8d0590883c5d966a55f9c03d0696b7ec67dde267 (patch)
treec347bace2383cba2874b633fea4ea9d2f3b97cd4
parent35ab68574afc1bb28ddd8f53a7e1e40240e5973e (diff)
downloadslapi-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()
-rw-r--r--src/disp-nis.c4
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;