Skip to content

Commit

Permalink
CLIENT: reduce code duplication
Browse files Browse the repository at this point in the history
Reviewed-by: Justin Stephenson <[email protected]>
Reviewed-by: Pavel Březina <[email protected]>
Reviewed-by: Sumit Bose <[email protected]>
  • Loading branch information
alexey-tikhonov committed Dec 6, 2023
1 parent 4255a0f commit 079f433
Showing 1 changed file with 6 additions and 18 deletions.
24 changes: 6 additions & 18 deletions src/sss_client/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -919,39 +919,27 @@ int sss_pac_check_and_open(void)
return EOK;
}

/* Non-locking version is exported (non-static) because
* it is used by 'krb5_child' (that is single threaded so
* it is safe to use non-locking version there) */
int sss_pac_make_request(enum sss_cli_command cmd,
struct sss_cli_req_data *rd,
uint8_t **repbuf, size_t *replen,
int *errnop)
{
enum sss_status ret;
char *envval;
int timeout = SSS_CLI_SOCKET_TIMEOUT;

/* avoid looping in the nss daemon */
envval = getenv("_SSS_LOOPS");
if (envval && strcmp(envval, "NO") == 0) {
return NSS_STATUS_NOTFOUND;
}

ret = sss_cli_check_socket(errnop, SSS_PAC_SOCKET_NAME, timeout);
if (ret != SSS_STATUS_SUCCESS) {
return NSS_STATUS_UNAVAIL;
}

ret = sss_cli_make_request_nochecks(cmd, rd, timeout, repbuf, replen,
errnop);
if (ret == SSS_STATUS_UNAVAIL && *errnop == EPIPE) {
/* try reopen socket */
ret = sss_cli_check_socket(errnop, SSS_PAC_SOCKET_NAME, timeout);
if (ret != SSS_STATUS_SUCCESS) {
return NSS_STATUS_UNAVAIL;
}
ret = sss_cli_make_request_with_checks(cmd, rd, SSS_CLI_SOCKET_TIMEOUT,
repbuf, replen, errnop,
SSS_PAC_SOCKET_NAME);

/* and make request one more time */
ret = sss_cli_make_request_nochecks(cmd, rd, timeout, repbuf, replen,
errnop);
}
switch (ret) {
case SSS_STATUS_TRYAGAIN:
return NSS_STATUS_TRYAGAIN;
Expand Down

0 comments on commit 079f433

Please sign in to comment.