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
This commit is contained in:
parent
617643aaa6
commit
06f13fb3f4
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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:
|
||||
|
@ -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 struct netbuf *nbuf)
|
||||
#endif
|
||||
u_int16_t port;
|
||||
|
||||
if (nbuf->len <= 0)
|
||||
return NULL;
|
||||
|
||||
switch (af) {
|
||||
case AF_INET:
|
||||
sin = nbuf->buf;
|
||||
|
@ -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
|
||||
|
@ -770,13 +770,6 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
|
||||
}
|
||||
|
||||
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.
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -780,13 +780,6 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
|
||||
}
|
||||
|
||||
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.
|
||||
|
Loading…
Reference in New Issue
Block a user