diff options
author | Luke Howard <lukeh@padl.com> | 2008-11-25 06:24:18 +0000 |
---|---|---|
committer | Luke Howard <lukeh@padl.com> | 2008-11-25 06:24:18 +0000 |
commit | a5b70b266d45766439dde04d2b5f49eb46a89806 (patch) | |
tree | e59b37f0352331f7811363f13b9bdcb188d28a0d | |
parent | 633449e156a043393ca84ef8fce6ca9e3713c15e (diff) | |
download | krb5-a5b70b266d45766439dde04d2b5f49eb46a89806.zip krb5-a5b70b266d45766439dde04d2b5f49eb46a89806.tar.gz krb5-a5b70b266d45766439dde04d2b5f49eb46a89806.tar.bz2 |
Be a little friendlier to the RPC runtime, by notifying it of closed FDs
on shutdown
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/mskrb-integ@21191 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r-- | src/kadmin/server/network.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/kadmin/server/network.c b/src/kadmin/server/network.c index 0b3716d..a675470 100644 --- a/src/kadmin/server/network.c +++ b/src/kadmin/server/network.c @@ -1864,13 +1864,21 @@ closedown_network(void *handle, const char *prog) return KDC5_NONET; FOREACH_ELT (connections, i, conn) { - if (conn->type == CONN_RPC_LISTENER) { - if (conn->u.rpc.transp != NULL) - svc_destroy(conn->u.rpc.transp); - } if (conn->fd >= 0) { krb5_klog_syslog(LOG_INFO, "closing down fd %d", conn->fd); (void) close(conn->fd); + if (conn->type == CONN_RPC) { + fd_set fds; + + FD_ZERO(&fds); + FD_SET(conn->fd, &fds); + + svc_getreqset(&fds); + } + } + if (conn->type == CONN_RPC_LISTENER) { + if (conn->u.rpc.transp != NULL) + svc_destroy(conn->u.rpc.transp); } DEL (connections, i); /* There may also be per-connection data in the tcp structure |