summaryrefslogtreecommitdiff
path: root/source3/winbindd/winbindd_sid.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2008-07-13 12:07:40 +0200
committerVolker Lendecke <vl@samba.org>2008-08-12 11:28:29 +0200
commit340ab6a256802a22c11b7f707748397249075b65 (patch)
tree20d297829eb3e27c6c80ad537712627ae845a4ef /source3/winbindd/winbindd_sid.c
parent8d4bd2d960ebf11bc85891210c6f72a371e08417 (diff)
downloadsamba-340ab6a256802a22c11b7f707748397249075b65.tar.gz
samba-340ab6a256802a22c11b7f707748397249075b65.tar.bz2
samba-340ab6a256802a22c11b7f707748397249075b65.zip
idmap rewrite
(This used to be commit 30a180f2fce8cf6a3e5548f6bba453272ba70b33)
Diffstat (limited to 'source3/winbindd/winbindd_sid.c')
-rw-r--r--source3/winbindd/winbindd_sid.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/source3/winbindd/winbindd_sid.c b/source3/winbindd/winbindd_sid.c
index 5f5972fb05..274786fa63 100644
--- a/source3/winbindd/winbindd_sid.c
+++ b/source3/winbindd/winbindd_sid.c
@@ -166,12 +166,10 @@ static void sid2uid_recv(void *private_data, bool success, uid_t uid)
if (!success) {
DEBUG(5, ("Could not convert sid %s\n",
state->request.data.sid));
- idmap_cache_set_sid2uid(&sid, -1);
request_error(state);
return;
}
- idmap_cache_set_sid2uid(&sid, uid);
state->response.data.uid = uid;
request_ok(state);
}
@@ -209,6 +207,10 @@ static void sid2uid_lookupsid_recv( void *private_data, bool success,
return;
fail:
+ /*
+ * We have to set the cache ourselves here, the child which is
+ * normally responsible was not queried yet.
+ */
idmap_cache_set_sid2uid(&sid, -1);
request_error(state);
return;
@@ -273,12 +275,10 @@ static void sid2gid_recv(void *private_data, bool success, gid_t gid)
if (!success) {
DEBUG(5, ("Could not convert sid %s\n",
state->request.data.sid));
- idmap_cache_set_sid2gid(&sid, -1);
request_error(state);
return;
}
- idmap_cache_set_sid2gid(&sid, gid);
state->response.data.gid = gid;
request_ok(state);
}
@@ -319,6 +319,10 @@ static void sid2gid_lookupsid_recv( void *private_data, bool success,
return;
fail:
+ /*
+ * We have to set the cache ourselves here, the child which is
+ * normally responsible was not queried yet.
+ */
idmap_cache_set_sid2gid(&sid, -1);
request_error(state);
return;
@@ -516,7 +520,7 @@ static void gid2sid_recv(void *private_data, bool success, const char *sidstr)
return;
}
DEBUG(10,("gid2sid: gid %lu has sid %s\n",
- (unsigned long)(state->request.data.gid), sid));
+ (unsigned long)(state->request.data.gid), sidstr));
idmap_cache_set_sid2gid(&sid, state->request.data.gid);
fstrcpy(state->response.data.sid.sid, sidstr);