summaryrefslogtreecommitdiffstats
path: root/src/lib/rpc
diff options
context:
space:
mode:
authorEzra Peisach <epeisach@mit.edu>2001-07-08 12:24:10 +0000
committerEzra Peisach <epeisach@mit.edu>2001-07-08 12:24:10 +0000
commite18aafa194afdb6f62b37f516cfd4ef1ddc866af (patch)
tree59121b09b8d7e0f34ac16de2ada4f11253f69435 /src/lib/rpc
parentda7f2d2fe0d934611593ea5140fcecc47644a738 (diff)
downloadkrb5-e18aafa194afdb6f62b37f516cfd4ef1ddc866af.tar.gz
krb5-e18aafa194afdb6f62b37f516cfd4ef1ddc866af.tar.xz
krb5-e18aafa194afdb6f62b37f516cfd4ef1ddc866af.zip
* svc.c (xprt_register): If svc_fdset has not been initilized,
FD_ZERO it. * rpc_commondata.c: Do not assume what the structure of an fd_set looks like. Add variable gssrpc_svc_fdset_init to determine if initialized. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13585 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/rpc')
-rw-r--r--src/lib/rpc/ChangeLog9
-rw-r--r--src/lib/rpc/rpc_commondata.c3
-rw-r--r--src/lib/rpc/svc.c5
3 files changed, 16 insertions, 1 deletions
diff --git a/src/lib/rpc/ChangeLog b/src/lib/rpc/ChangeLog
index 1040d75861..910ee4a501 100644
--- a/src/lib/rpc/ChangeLog
+++ b/src/lib/rpc/ChangeLog
@@ -1,3 +1,12 @@
+2001-07-08 Ezra Peisach <epeisach@mit.edu>
+
+ * svc.c (xprt_register): If svc_fdset has not been initilized,
+ FD_ZERO it.
+
+ * rpc_commondata.c: Do not assume what the structure of an fd_set
+ looks like. Add variable gssrpc_svc_fdset_init to determine if
+ initialized.
+
2001-07-06 Ezra Peisach <epeisach@mit.edu>
* auth_unix.c: In case GETGROUPS_T is not defined, default to int.
diff --git a/src/lib/rpc/rpc_commondata.c b/src/lib/rpc/rpc_commondata.c
index 8c27774e21..530b181e8d 100644
--- a/src/lib/rpc/rpc_commondata.c
+++ b/src/lib/rpc/rpc_commondata.c
@@ -37,7 +37,8 @@
*/
struct opaque_auth _null_auth = {0};
#ifdef FD_SETSIZE
-fd_set svc_fdset = {0};
+fd_set svc_fdset; /* Will be zeroed in data segment */
+int gssrpc_svc_fdset_init = 0;
#else
int svc_fds = 0;
#endif /* def FD_SETSIZE */
diff --git a/src/lib/rpc/svc.c b/src/lib/rpc/svc.c
index 573ea887ce..5c82b44b7c 100644
--- a/src/lib/rpc/svc.c
+++ b/src/lib/rpc/svc.c
@@ -51,6 +51,7 @@ extern int errno;
#ifdef FD_SETSIZE
static SVCXPRT **xports;
static int max_xport = 0;
+extern int gssrpc_svc_fdset_init;
#else
#define NOFILE 32
@@ -88,6 +89,10 @@ xprt_register(xprt)
register int sock = xprt->xp_sock;
#ifdef FD_SETSIZE
+ if (gssrpc_svc_fdset_init == 0) {
+ FD_ZERO(&svc_fdset);
+ gssrpc_svc_fdset_init++;
+ }
if (xports == NULL) {
xports = (SVCXPRT **)
mem_alloc(FD_SETSIZE * sizeof(SVCXPRT *));