aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Howard <lukeh@padl.com>2008-11-25 06:24:18 +0000
committerLuke Howard <lukeh@padl.com>2008-11-25 06:24:18 +0000
commita5b70b266d45766439dde04d2b5f49eb46a89806 (patch)
treee59b37f0352331f7811363f13b9bdcb188d28a0d
parent633449e156a043393ca84ef8fce6ca9e3713c15e (diff)
downloadkrb5-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.c16
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