Thu May 9 09:17:46 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
authorroland <roland>
Thu, 9 May 1996 21:48:15 +0000 (21:48 +0000)
committerroland <roland>
Thu, 9 May 1996 21:48:15 +0000 (21:48 +0000)
Cleanups in sunrpc code from NIIBE Yutaka <gniibe@mri.co.jp>.
* sunrpc/clnt_tcp.c (clnttcp_create): Don't close *SOCKP if it's -1.
* sunrpc/clnt_simp.c (callrpc): Don't close CRP->socket if it's
RPC_ANYSOCK.
* sunrpc/pmap_clnt.c (pmap_set): Don't close SOCKET, since
CLNT_DESTROY already has.
(pmap_unset): Likewise.
* sunrpc/pm_getmaps.c (pmap_getmaps): Likewise.
* sunrpc/pm_getport.c (pmap_getport): Likewise.
* sunrpc/pmap_rmt.c (pmap_rmtcall): Likewise.
* sunrpc/portmap.c (callit): Likewise.

sunrpc/clnt_simp.c
sunrpc/clnt_tcp.c
sunrpc/pm_getmaps.c
sunrpc/pm_getport.c
sunrpc/pmap_clnt.c
sunrpc/pmap_rmt.c
sunrpc/portmap.c

index 043ce0a..e289b34 100644 (file)
@@ -6,23 +6,23 @@
  * may copy or modify Sun RPC without charge, but are not authorized
  * to license or distribute it to anyone else except as part of a product or
  * program developed by the user.
- * 
+ *
  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- * 
+ *
  * Sun RPC is provided with no support and without any obligation on the
  * part of Sun Microsystems, Inc. to assist in its use, correction,
  * modification or enhancement.
- * 
+ *
  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
  * OR ANY PART THEREOF.
- * 
+ *
  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  * or profits or other special, indirect and consequential damages, even if
  * Sun has been advised of the possibility of such damages.
- * 
+ *
  * Sun Microsystems, Inc.
  * 2550 Garcia Avenue
  * Mountain View, California  94043
@@ -31,7 +31,7 @@
 static char sccsid[] = "@(#)clnt_simple.c 1.35 87/08/11 Copyr 1984 Sun Micro";
 #endif
 
-/* 
+/*
  * clnt_simple.c
  * Simplified front end to rpc.
  *
@@ -75,11 +75,14 @@ callrpc(host, prognum, versnum, procnum, inproc, in, outproc, out)
        }
        if (crp->valid && crp->oldprognum == prognum && crp->oldversnum == versnum
                && strcmp(crp->oldhost, host) == 0) {
-               /* reuse old client */          
+               /* reuse old client */
        } else {
                crp->valid = 0;
-               (void)close(crp->socket);
-               crp->socket = RPC_ANYSOCK;
+               if (crp->socket != RPC_ANYSOCK)
+                 {
+                   (void)close(crp->socket);
+                   crp->socket = RPC_ANYSOCK;
+                 }
                if (crp->client) {
                        clnt_destroy(crp->client);
                        crp->client = NULL;
@@ -103,7 +106,7 @@ callrpc(host, prognum, versnum, procnum, inproc, in, outproc, out)
        tottimeout.tv_usec = 0;
        clnt_stat = clnt_call(crp->client, procnum, inproc, in,
            outproc, out, tottimeout);
-       /* 
+       /*
         * if call failed, empty cache
         */
        if (clnt_stat != RPC_SUCCESS)
index f6b28b3..3b71e11 100644 (file)
@@ -6,23 +6,23 @@
  * may copy or modify Sun RPC without charge, but are not authorized
  * to license or distribute it to anyone else except as part of a product or
  * program developed by the user.
- * 
+ *
  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- * 
+ *
  * Sun RPC is provided with no support and without any obligation on the
  * part of Sun Microsystems, Inc. to assist in its use, correction,
  * modification or enhancement.
- * 
+ *
  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
  * OR ANY PART THEREOF.
- * 
+ *
  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  * or profits or other special, indirect and consequential damages, even if
  * Sun has been advised of the possibility of such damages.
- * 
+ *
  * Sun Microsystems, Inc.
  * 2550 Garcia Avenue
  * Mountain View, California  94043
@@ -30,7 +30,7 @@
 #if !defined(lint) && defined(SCCSIDS)
 static char sccsid[] = "@(#)clnt_tcp.c 1.37 87/10/05 Copyr 1984 Sun Micro";
 #endif
+
 /*
  * clnt_tcp.c, Implements a TCP/IP based, client side RPC.
  *
@@ -85,7 +85,7 @@ struct ct_data {
        bool_t          ct_closeit;
        struct timeval  ct_wait;
        bool_t          ct_waitset;       /* wait set by clnt_control? */
-       struct sockaddr_in ct_addr; 
+       struct sockaddr_in ct_addr;
        struct rpc_err  ct_error;
        char            ct_mcall[MCALL_MSG_SIZE];       /* marshalled callmsg */
        u_int           ct_mpos;                        /* pos after marshal */
@@ -159,7 +159,8 @@ clnttcp_create(raddr, prog, vers, sockp, sendsz, recvsz)
                    sizeof(*raddr)) < 0)) {
                        rpc_createerr.cf_stat = RPC_SYSTEMERROR;
                        rpc_createerr.cf_error.re_errno = errno;
-                       (void)close(*sockp);
+                       if (*sockp >= 0)
+                         (void)close(*sockp);
                        goto fooy;
                }
                ct->ct_closeit = TRUE;
index c7da2c0..7a9cbb6 100644 (file)
@@ -81,7 +81,7 @@ pmap_getmaps(address)
                }
                CLNT_DESTROY(client);
        }
-       (void)close(socket);
+       /* (void)close(socket); CLNT_DESTROY already closed it */
        address->sin_port = 0;
        return (head);
 }
index 102dd6f..f156af4 100644 (file)
@@ -84,7 +84,7 @@ pmap_getport(address, program, version, protocol)
                }
                CLNT_DESTROY(client);
        }
-       (void)close(socket);
+       /* (void)close(socket); CLNT_DESTROY already closed it */
        address->sin_port = 0;
        return (port);
 }
index f93efaa..08285e2 100644 (file)
@@ -80,7 +80,7 @@ pmap_set(program, version, protocol, port)
                return (FALSE);
        }
        CLNT_DESTROY(client);
-       (void)close(socket);
+       /* (void)close(socket); CLNT_DESTROY closes it */
        return (rslt);
 }
 
@@ -110,6 +110,6 @@ pmap_unset(program, version)
        CLNT_CALL(client, PMAPPROC_UNSET, xdr_pmap, &parms, xdr_bool, &rslt,
            tottimeout);
        CLNT_DESTROY(client);
-       (void)close(socket);
+       /* (void)close(socket); CLNT_DESTROY already closed it */
        return (rslt);
 }
index 30af4f9..24ace16 100644 (file)
@@ -96,7 +96,7 @@ pmap_rmtcall(addr, prog, vers, proc, xdrargs, argsp, xdrres, resp, tout, port_pt
        } else {
                stat = RPC_FAILED;
        }
-       (void)close(socket);
+       /* (void)close(socket); CLNT_DESTROY already closed it */
        addr->sin_port = 0;
        return (stat);
 }
index 7a362ae..a45170b 100644 (file)
@@ -470,7 +470,7 @@ callit(rqstp, xprt)
                AUTH_DESTROY(client->cl_auth);
                clnt_destroy(client);
        }
-       (void)close(socket);
+       /* (void)close(socket); clnt_destroy already closed it */
        exit(0);
 }