in src/oslogin_utils.cc [366:403]
bool NssCache::NssGetgrentHelper(BufferManager* buf, struct group* result, int* errnop) {
if (!HasNextEntry() && !OnLastPage()) {
std::stringstream url;
url << kMetadataServerUrl << "groups?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;
}
// Failed to make the request or empty response.
if (!status || http_code != 200 || response.empty()) {
*errnop = ENOENT;
return false;
}
// General failure to load the cache occurred.
if (!LoadJsonGroupsToCache(response, errnop)) {
return false;
}
}
if (!HasNextEntry() || !GetNextGroup(buf, result, errnop)) {
return false;
}
std::vector<string> users;
std::string name(result->gr_name);
if (!GetUsersForGroup(name, &users, errnop)) {
return false;
}
return AddUsersToGroup(users, result, buf, errnop);
}