about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--sunrpc/clnt_simp.c23
-rw-r--r--sunrpc/clnt_tcp.c17
-rw-r--r--sunrpc/pm_getmaps.c2
-rw-r--r--sunrpc/pm_getport.c2
-rw-r--r--sunrpc/pmap_clnt.c4
-rw-r--r--sunrpc/pmap_rmt.c2
-rw-r--r--sunrpc/portmap.c2
8 files changed, 40 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 9d0fa76502..85bd1734cd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 Thu May  9 09:17:46 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 
+	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.
+
 	* Makerules (versioned): Strip whitespace.
 
 	* Rules (static-only-routines rule): Remove spurious space in dep.
diff --git a/sunrpc/clnt_simp.c b/sunrpc/clnt_simp.c
index 043ce0a3eb..e289b3400d 100644
--- a/sunrpc/clnt_simp.c
+++ b/sunrpc/clnt_simp.c
@@ -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)
diff --git a/sunrpc/clnt_tcp.c b/sunrpc/clnt_tcp.c
index f6b28b31d7..3b71e119f0 100644
--- a/sunrpc/clnt_tcp.c
+++ b/sunrpc/clnt_tcp.c
@@ -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;
diff --git a/sunrpc/pm_getmaps.c b/sunrpc/pm_getmaps.c
index c7da2c060d..7a9cbb6f18 100644
--- a/sunrpc/pm_getmaps.c
+++ b/sunrpc/pm_getmaps.c
@@ -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);
 }
diff --git a/sunrpc/pm_getport.c b/sunrpc/pm_getport.c
index 102dd6f210..f156af41c2 100644
--- a/sunrpc/pm_getport.c
+++ b/sunrpc/pm_getport.c
@@ -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);
 }
diff --git a/sunrpc/pmap_clnt.c b/sunrpc/pmap_clnt.c
index f93efaa94a..08285e2719 100644
--- a/sunrpc/pmap_clnt.c
+++ b/sunrpc/pmap_clnt.c
@@ -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);
 }
diff --git a/sunrpc/pmap_rmt.c b/sunrpc/pmap_rmt.c
index 30af4f90c2..24ace162b2 100644
--- a/sunrpc/pmap_rmt.c
+++ b/sunrpc/pmap_rmt.c
@@ -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);
 }
diff --git a/sunrpc/portmap.c b/sunrpc/portmap.c
index 7a362ae9b0..a45170bf00 100644
--- a/sunrpc/portmap.c
+++ b/sunrpc/portmap.c
@@ -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);
 }