}
#if USE_BINDINGDIR
- if (ysd->dom_vers < 1)
+ if (ysd->dom_vers < 1 && try < 3)
{
char path[sizeof (BINDINGDIR) - 1 + strlen (domain) + 10];
struct iovec vec[2];
/* If the program exists, close the socket */
if (fcntl (ysd->dom_socket, F_SETFD, 1) == -1)
- perror (_("fcntl: F_SETFD"));
+ /* XXX Really print here? --drepper */
+ perror ("fcntl: F_SETFD");
if (is_new && ypdb != NULL)
{
{
dom_binding *ydb = NULL;
bool_t use_ypbindlist = FALSE;
- int try, result;
+ int try, status;
+ enum clnt_stat result;
try = 0;
- result = YPERR_YPERR;
+ status = YPERR_YPERR;
__libc_lock_lock (ypbindlist_lock);
if (__ypbindlist != NULL)
else
__libc_lock_unlock (ypbindlist_lock);
- while (try < MAXTRIES && result != RPC_SUCCESS)
+ while (try < MAXTRIES && status != YPERR_SUCCESS))
{
if (__yp_bind (domain, &ydb) != 0)
{
free (ydb);
ydb = NULL;
}
- result = YPERR_RPC;
+ status = YPERR_RPC;;
}
+ else
+ status = YPERR_SUCCESS;
+
try++;
}
if (use_ypbindlist)
ydb = NULL;
}
- return result;
+ return status;
}
int
{
ypreq_key req;
ypresp_val resp;
- int result;
+ enum clnt_stat result;
if (indomain == NULL || indomain[0] == '\0' ||
inmap == NULL || inmap[0] == '\0' ||
(caddr_t) & resp);
if (result != RPC_SUCCESS)
- return result;
+ return YPERR_RPC;
if (resp.stat != YP_TRUE)
return ypprot_err (resp.stat);
{
ypreq_nokey req;
ypresp_key_val resp;
- int result;
+ enum clnt_stat result;
if (indomain == NULL || indomain[0] == '\0' ||
inmap == NULL || inmap[0] == '\0')
(caddr_t) & resp);
if (result != RPC_SUCCESS)
- return result;
+ return YPERR_RPC;
if (resp.stat != YP_TRUE)
return ypprot_err (resp.stat);
{
ypreq_key req;
ypresp_key_val resp;
- int result;
+ enum clnt_stat result;
if (indomain == NULL || indomain[0] == '\0' ||
inmap == NULL || inmap[0] == '\0' ||
(caddr_t) & resp);
if (result != RPC_SUCCESS)
- return result;
+ return YPERR_RPC;
if (resp.stat != YP_TRUE)
return ypprot_err (resp.stat);
{
ypreq_nokey req;
ypresp_master resp;
- int result;
+ enum clnt_stat result;
if (indomain == NULL || indomain[0] == '\0' ||
inmap == NULL || inmap[0] == '\0')
(caddr_t) & req, (xdrproc_t) xdr_ypresp_master, (caddr_t) & resp);
if (result != RPC_SUCCESS)
- return result;
+ return YPERR_RPC;
if (resp.stat != YP_TRUE)
return ypprot_err (resp.stat);
*outname = strdup (resp.peer);
+ /* XXX Check for failure in strdup --drepper */
xdr_free ((xdrproc_t) xdr_ypresp_master, (char *) &resp);
return YPERR_SUCCESS;
{
struct ypreq_nokey req;
struct ypresp_order resp;
- int result;
+ enum clnt_stat result;
if (indomain == NULL || indomain[0] == '\0' ||
inmap == NULL || inmap == '\0')
(caddr_t) & req, (xdrproc_t) xdr_ypresp_order, (caddr_t) & resp);
if (result != RPC_SUCCESS)
- return result;
+ return YPERR_RPC;
if (resp.stat != YP_TRUE)
return ypprot_err (resp.stat);
{
xdr_free ((xdrproc_t) xdr_ypresp_all, (char *) &resp);
*objp = YP_YPERR;
- return (FALSE);
+ return FALSE;
}
if (resp.more == 0)
{
xdr_free ((xdrproc_t) xdr_ypresp_all, (char *) &resp);
*objp = YP_NOMORE;
- return (FALSE);
+ return TRUE;
}
switch (resp.ypresp_all_u.val.stat)
{
struct ypreq_nokey req;
dom_binding *ydb = NULL;
- int try, result;
+ int try, res;
+ enum clnt_stat result;
struct sockaddr_in clnt_sin;
CLIENT *clnt;
unsigned long status;
return YPERR_BADARGS;
try = 0;
- result = YPERR_YPERR;
+ res = YPERR_YPERR;
- while (try < MAXTRIES && result != RPC_SUCCESS)
+ while (try < MAXTRIES && res != YPERR_SUCCESS)
{
if (__yp_bind (indomain, &ydb) != 0)
{
(caddr_t) &req, (xdrproc_t) __xdr_ypresp_all,
(caddr_t) &status, RPCTIMEOUT);
- clnt_destroy (clnt);
- close (clnt_sock);
if (result != RPC_SUCCESS)
{
- clnt_perror (ydb->dom_client, "yp_all: clnt_call");
- __yp_unbind (ydb);
- free (ydb);
- result = YPERR_RPC;
+ clnt_perror (clnt, "yp_all: clnt_call");
+ res = YPERR_RPC;
}
else
- result = YPERR_SUCCESS;
+ res = YPERR_SUCCESS;
+
+ clnt_destroy (clnt);
+ close (clnt_sock);
if (status != YP_NOMORE)
return ypprot_err (status);
try++;
}
- return result;
+ return res;
}
int
yp_maplist (const char *indomain, struct ypmaplist **outmaplist)
{
struct ypresp_maplist resp;
- int result;
+ enum clnt_stat result;
if (indomain == NULL || indomain[0] == '\0')
return YPERR_BADARGS;
(caddr_t) & indomain, (xdrproc_t) xdr_ypresp_maplist, (caddr_t) & resp);
if (result != RPC_SUCCESS)
- return result;
+ return YPERR_RPC;
if (resp.stat != YP_TRUE)
return ypprot_err (resp.stat);