* svc.c (xprt_register): If svc_fdset has not been initilized,
authorEzra Peisach <epeisach@mit.edu>
Sun, 8 Jul 2001 12:24:10 +0000 (12:24 +0000)
committerEzra Peisach <epeisach@mit.edu>
Sun, 8 Jul 2001 12:24:10 +0000 (12:24 +0000)
        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

src/lib/rpc/ChangeLog
src/lib/rpc/rpc_commondata.c
src/lib/rpc/svc.c

index 1040d758619ac3e5357368a84f6a023aa36bf388..910ee4a501a52e291cc08ac6bb217fc22905cba8 100644 (file)
@@ -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.
index 8c27774e21f7cb1a53aad570ed29a92137883c9f..530b181e8d19ef7518e6891b12f8f98d965965b5 100644 (file)
@@ -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 */
index 573ea887cee1abd5e3d745c80cef7475dcddc85c..5c82b44b7c40e914af995c01be32f78e65c3591d 100644 (file)
@@ -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 *));