bool NssCache::NssGetpwentHelper()

in src/oslogin_utils.cc [331:354]


bool NssCache::NssGetpwentHelper(BufferManager* buf, struct passwd* result, int* errnop) {
  if (!HasNextEntry() && !OnLastPage()) {
    std::stringstream url;
    url << kMetadataServerUrl << "users?pagesize=" << cache_size_;
    string page_token = GetPageToken();
    if (!page_token.empty()) {
      url << "&pagetoken=" << page_token;
    }
    string response;
    long http_code = 0;
    bool status = HttpGet(url.str(), &response, &http_code);
    // 404 means OS Login is not enabled.
    if (http_code == 404) {
      *errnop = ENOMSG;
      return false;
    }
    // General failure to load the cache occurred.
    if (!status || http_code != 200 || response.empty() || !LoadJsonUsersToCache(response)) {
      *errnop = ENOENT;
      return false;
    }
  }
  return (HasNextEntry() && GetNextPasswd(buf, result, errnop));
}