Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Sep 2012 19:10:26 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r241007 - in head: lib/libc/rpc sys/rpc
Message-ID:  <201209271910.q8RJAQs2079645@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Thu Sep 27 19:10:25 2012
New Revision: 241007
URL: http://svn.freebsd.org/changeset/base/241007

Log:
  Complete revert of r239963:
  
  The attempt to merge changes from the linux libtirpc caused
  rpc.lockd to exit after startup under unclear conditions.
  
  After many hours of selective experiments and inconsistent results
  the conclusion is that it's better to just revert everything and
  restart in a future time with a much smaller subset of the
  changes.
  ____
  
  MFC after:	3 days
  Reported by:	David Wolfskill
  Tested by:	David Wolfskill

Modified:
  head/lib/libc/rpc/auth_unix.c
  head/lib/libc/rpc/authunix_prot.c
  head/lib/libc/rpc/clnt_perror.c
  head/lib/libc/rpc/rpc_generic.c
  head/lib/libc/rpc/rpc_soc.3
  head/lib/libc/rpc/rpcb_clnt.c
  head/lib/libc/rpc/svc_auth_unix.c
  head/lib/libc/rpc/svc_run.c
  head/sys/rpc/auth.h
  head/sys/rpc/rpcb_clnt.c

Modified: head/lib/libc/rpc/auth_unix.c
==============================================================================
--- head/lib/libc/rpc/auth_unix.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/auth_unix.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -94,10 +94,10 @@ struct audata {
 AUTH *
 authunix_create(machname, uid, gid, len, aup_gids)
 	char *machname;
-	uid_t uid;
-	gid_t gid;
+	int uid;
+	int gid;
 	int len;
-	gid_t *aup_gids;
+	int *aup_gids;
 {
 	struct authunix_parms aup;
 	char mymem[MAX_AUTH_BYTES];
@@ -207,7 +207,9 @@ authunix_create_default()
 		abort();
 	if (ngids > NGRPS)
 		ngids = NGRPS;
-	auth = authunix_create(machname, uid, gid, ngids, gids);
+	/* XXX: interface problem; those should all have been unsigned */
+	auth = authunix_create(machname, (int)uid, (int)gid, ngids,
+	    (int *)gids);
 	free(gids);
 	return (auth);
 }

Modified: head/lib/libc/rpc/authunix_prot.c
==============================================================================
--- head/lib/libc/rpc/authunix_prot.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/authunix_prot.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -60,7 +60,7 @@ xdr_authunix_parms(xdrs, p)
 	XDR *xdrs;
 	struct authunix_parms *p;
 {
-	gid_t **paup_gids;
+	int **paup_gids;
 
 	assert(xdrs != NULL);
 	assert(p != NULL);
@@ -69,8 +69,8 @@ xdr_authunix_parms(xdrs, p)
 
 	if (xdr_u_long(xdrs, &(p->aup_time))
 	    && xdr_string(xdrs, &(p->aup_machname), MAX_MACHINE_NAME)
-	    && xdr_u_int(xdrs, &(p->aup_uid))
-	    && xdr_u_int(xdrs, &(p->aup_gid))
+	    && xdr_int(xdrs, &(p->aup_uid))
+	    && xdr_int(xdrs, &(p->aup_gid))
 	    && xdr_array(xdrs, (char **) paup_gids,
 		    &(p->aup_len), NGRPS, sizeof(int), (xdrproc_t)xdr_int) ) {
 		return (TRUE);

Modified: head/lib/libc/rpc/clnt_perror.c
==============================================================================
--- head/lib/libc/rpc/clnt_perror.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/clnt_perror.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -242,7 +242,7 @@ char *
 clnt_spcreateerror(s)
 	const char *s;
 {
-	char *str, *err;
+	char *str;
 	size_t len, i;
 
 	assert(s != NULL);
@@ -258,21 +258,8 @@ clnt_spcreateerror(s)
 	switch (rpc_createerr.cf_stat) {
 	case RPC_PMAPFAILURE:
 		(void) strncat(str, " - ", len - 1);
-		 err = clnt_sperrno(rpc_createerr.cf_error.re_status);
-		if (err)
-			(void) strncat(str, err+5, len-5);
-		switch(rpc_createerr.cf_error.re_status) {
-		case RPC_CANTSEND:
-		case RPC_CANTRECV:
-			i = strlen(str);
-			len -= i;
-			snprintf(str+i, len, ": errno %d (%s)", 
-				rpc_createerr.cf_error.re_errno,
-				strerror(rpc_createerr.cf_error.re_errno)); 
-			break;
-		default:
-			break;
-		}
+		(void) strncat(str,
+		    clnt_sperrno(rpc_createerr.cf_error.re_status), len - 4);
 		break;
 
 	case RPC_SYSTEMERROR:

Modified: head/lib/libc/rpc/rpc_generic.c
==============================================================================
--- head/lib/libc/rpc/rpc_generic.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/rpc_generic.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -269,8 +269,7 @@ __rpc_getconfip(nettype)
 		}
 		while ((nconf = getnetconfig(confighandle)) != NULL) {
 			if (strcmp(nconf->nc_protofmly, NC_INET) == 0) {
-				if (strcmp(nconf->nc_proto, NC_TCP) == 0 &&
-				    netid_tcp == NULL) {
+				if (strcmp(nconf->nc_proto, NC_TCP) == 0) {
 					netid_tcp = strdup(nconf->nc_netid);
 					if (main_thread)
 						netid_tcp_main = netid_tcp;
@@ -278,8 +277,7 @@ __rpc_getconfip(nettype)
 						thr_setspecific(tcp_key,
 							(void *) netid_tcp);
 				} else
-				if (strcmp(nconf->nc_proto, NC_UDP) == 0 &&
-				   netid_udp == NULL) {
+				if (strcmp(nconf->nc_proto, NC_UDP) == 0) {
 					netid_udp = strdup(nconf->nc_netid);
 					if (main_thread)
 						netid_udp_main = netid_udp;
@@ -618,9 +616,6 @@ __rpc_taddr2uaddr_af(int af, const struc
 #endif
 	u_int16_t port;
 
-	if (nbuf->len <= 0)
-		return NULL;
-
 	switch (af) {
 	case AF_INET:
 		sin = nbuf->buf;

Modified: head/lib/libc/rpc/rpc_soc.3
==============================================================================
--- head/lib/libc/rpc/rpc_soc.3	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/rpc_soc.3	Thu Sep 27 19:10:25 2012	(r241007)
@@ -148,7 +148,7 @@ default authentication used by
 .Ft "AUTH *"
 .Xc
 .It Xo
-.Fn authunix_create "char *host" "uid_t uid" "gid_t gid" "int len" "gid_t *aup_gids"
+.Fn authunix_create "char *host" "int uid" "int gid" "int len" "int *aup_gids"
 .Xc
 .Pp
 Create and return an

Modified: head/lib/libc/rpc/rpcb_clnt.c
==============================================================================
--- head/lib/libc/rpc/rpcb_clnt.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/rpcb_clnt.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -770,13 +770,6 @@ __rpcb_findaddr_timed(program, version, 
 	}
 
 	parms.r_addr = NULL;
-	parms.r_netid = nconf->nc_netid;
-
-       /*
-	* According to wire captures, the reference implementation
-	* (OpenSolaris) sends a blank string here too.
-	*/
-	parms.r_owner = "";
 
 	/*
 	 * Use default total timeout if no timeout is specified.

Modified: head/lib/libc/rpc/svc_auth_unix.c
==============================================================================
--- head/lib/libc/rpc/svc_auth_unix.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/svc_auth_unix.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -68,7 +68,7 @@ _svcauth_unix(rqst, msg)
 	struct area {
 		struct authunix_parms area_aup;
 		char area_machname[MAX_MACHINE_NAME+1];
-		gid_t area_gids[NGRPS];
+		int area_gids[NGRPS];
 	} *area;
 	u_int auth_len;
 	size_t str_len, gid_len;

Modified: head/lib/libc/rpc/svc_run.c
==============================================================================
--- head/lib/libc/rpc/svc_run.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/lib/libc/rpc/svc_run.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -60,13 +60,14 @@ svc_run()
 	fd_set readfds, cleanfds;
 	struct timeval timeout;
 
+	timeout.tv_sec = 30;
+	timeout.tv_usec = 0;
+
 	for (;;) {
 		rwlock_rdlock(&svc_fd_lock);
 		readfds = svc_fdset;
 		cleanfds = svc_fdset;
 		rwlock_unlock(&svc_fd_lock);
-		timeout.tv_sec = 30;
-		timeout.tv_usec = 0;
 		switch (_select(svc_maxfd+1, &readfds, NULL, NULL, &timeout)) {
 		case -1:
 			FD_ZERO(&readfds);

Modified: head/sys/rpc/auth.h
==============================================================================
--- head/sys/rpc/auth.h	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/sys/rpc/auth.h	Thu Sep 27 19:10:25 2012	(r241007)
@@ -234,17 +234,18 @@ __END_DECLS
  * System style authentication
  * AUTH *authunix_create(machname, uid, gid, len, aup_gids)
  *	char *machname;
- *	uid_t uid;
- *	gid_t gid;
+ *	int uid;
+ *	int gid;
  *	int len;
- *	gid_t *aup_gids;
+ *	int *aup_gids;
  */
 __BEGIN_DECLS
 #ifdef _KERNEL
 struct ucred;
 extern AUTH *authunix_create(struct ucred *);
 #else
-extern AUTH *authunix_create(char *, uid_t, gid_t, int, gid_t *);
+extern AUTH *authunix_create(char *, int, int, int,
+    int *);
 extern AUTH *authunix_create_default(void);	/* takes no parameters */
 #endif
 extern AUTH *authnone_create(void);		/* takes no parameters */

Modified: head/sys/rpc/rpcb_clnt.c
==============================================================================
--- head/sys/rpc/rpcb_clnt.c	Thu Sep 27 18:53:59 2012	(r241006)
+++ head/sys/rpc/rpcb_clnt.c	Thu Sep 27 19:10:25 2012	(r241007)
@@ -780,13 +780,6 @@ __rpcb_findaddr_timed(program, version, 
 	}
 
 	parms.r_addr = NULL;
-	parms.r_netid = nconf->nc_netid;
-
-       /*
-	* According to wire captures, the reference implementation
-	* (OpenSolaris) sends a blank string here too.
-	*/
-	parms.r_owner = "";
 
 	/*
 	 * Use default total timeout if no timeout is specified.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209271910.q8RJAQs2079645>