[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-3085-g448836d

Volker Lendecke vlendec at samba.org
Thu Jul 3 19:19:45 GMT 2008


The branch, v3-3-test has been updated
       via  448836d44d0468a74b962ba3c0b7d51de236374f (commit)
       via  2396d5d5d2f453f097f8ce77b640ad7e1d7e7c4c (commit)
       via  55b976ba93462c6885e8d89edd13c32fb5529944 (commit)
       via  80932c0266ef73b8d0462c078a053444fff47f32 (commit)
      from  e98e080bad2c8b9f038a8f2dffcfeba1d5f392ce (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit 448836d44d0468a74b962ba3c0b7d51de236374f
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jul 3 21:03:58 2008 +0200

    Slightly increase the default idmap cache time

commit 2396d5d5d2f453f097f8ce77b640ad7e1d7e7c4c
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jul 3 20:39:22 2008 +0200

    IDMAP_READ_CACHE_DATA_FMT_TEMPLATE is unused, remove it

commit 55b976ba93462c6885e8d89edd13c32fb5529944
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jul 3 04:59:36 2008 +0200

    Simplify idmap_cache_set() a bit
    
    sid_check_is_in_unix_* will only give true if it is of the corresponding type,
    so the check if the struct idmap actually represents a user or group is
    unnecessary.

commit 80932c0266ef73b8d0462c078a053444fff47f32
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jul 3 04:57:30 2008 +0200

    Simplify idmap_cache_build_[s]idkey a bit

-----------------------------------------------------------------------

Summary of changes:
 docs-xml/smbdotconf/winbind/idmapcachetime.xml |    2 +-
 source/param/loadparm.c                        |    2 +-
 source/winbindd/idmap_cache.c                  |   81 +++++++++++-------------
 3 files changed, 38 insertions(+), 47 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/smbdotconf/winbind/idmapcachetime.xml b/docs-xml/smbdotconf/winbind/idmapcachetime.xml
index 1636cdf..55ead61 100644
--- a/docs-xml/smbdotconf/winbind/idmapcachetime.xml
+++ b/docs-xml/smbdotconf/winbind/idmapcachetime.xml
@@ -9,5 +9,5 @@
 	</para>
 </description>
 
-<value type="default">900</value>
+<value type="default">604800 (i.e. 1 week)</value>
 </samba:parameter>
diff --git a/source/param/loadparm.c b/source/param/loadparm.c
index b2cbbf1..c529948 100644
--- a/source/param/loadparm.c
+++ b/source/param/loadparm.c
@@ -4827,7 +4827,7 @@ static void init_globals(bool first_time_only)
 	Globals.bWinbindRefreshTickets = False;
 	Globals.bWinbindOfflineLogon = False;
 
-	Globals.iIdmapCacheTime = 900; /* 15 minutes by default */
+	Globals.iIdmapCacheTime = 7 * 24 * 3600; /* 1 week by default */
 	Globals.iIdmapNegativeCacheTime = 120; /* 2 minutes by default */
 
 	Globals.bPassdbExpandExplicit = False;
diff --git a/source/winbindd/idmap_cache.c b/source/winbindd/idmap_cache.c
index b724ba0..8bf797f 100644
--- a/source/winbindd/idmap_cache.c
+++ b/source/winbindd/idmap_cache.c
@@ -25,7 +25,6 @@
 
 #define TIMEOUT_LEN 12
 #define IDMAP_CACHE_DATA_FMT	"%12u/%s"
-#define IDMAP_READ_CACHE_DATA_FMT_TEMPLATE "%%12u/%%%us"
 
 struct idmap_cache_ctx {
 	TDB_CONTEXT *tdb;
@@ -70,33 +69,19 @@ struct idmap_cache_ctx *idmap_cache_init(TALLOC_CTX *memctx)
 	return cache;
 }
 
-static NTSTATUS idmap_cache_build_sidkey(TALLOC_CTX *ctx, char **sidkey,
-					 const struct id_map *id)
+static char *idmap_cache_sidkey(TALLOC_CTX *ctx, const DOM_SID *sid)
 {
 	fstring sidstr;
 
-	*sidkey = talloc_asprintf(ctx, "IDMAP/SID/%s",
-				  sid_to_fstring(sidstr, id->sid));
-	if ( ! *sidkey) {
-		DEBUG(1, ("failed to build sidkey, OOM?\n"));
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	return NT_STATUS_OK;
+	return talloc_asprintf(ctx, "IDMAP/SID/%s",
+			       sid_to_fstring(sidstr, sid));
 }
 
-static NTSTATUS idmap_cache_build_idkey(TALLOC_CTX *ctx, char **idkey,
-					const struct id_map *id)
+static char *idmap_cache_idkey(TALLOC_CTX *ctx, const struct id_map *id)
 {
-	*idkey = talloc_asprintf(ctx, "IDMAP/%s/%lu",
-				(id->xid.type==ID_TYPE_UID)?"UID":"GID",
-				(unsigned long)id->xid.id);
-	if ( ! *idkey) {
-		DEBUG(1, ("failed to build idkey, OOM?\n"));
-		return NT_STATUS_NO_MEMORY;
-	}
-
-	return NT_STATUS_OK;
+	return talloc_asprintf(ctx, "IDMAP/%s/%lu",
+			       (id->xid.type==ID_TYPE_UID)?"UID":"GID",
+			       (unsigned long)id->xid.id);
 }
 
 NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
@@ -109,23 +94,21 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id)
 	char *valstr;
 
 	/* Don't cache lookups in the S-1-22-{1,2} domain */
-	if ( (id->xid.type == ID_TYPE_UID) && 
-	     sid_check_is_in_unix_users(id->sid) )
-	{
-		return NT_STATUS_OK;
-	}
-	if ( (id->xid.type == ID_TYPE_GID) && 
-	     sid_check_is_in_unix_groups(id->sid) )
-	{
+
+	if (sid_check_is_in_unix_users(id->sid)
+	    || sid_check_is_in_unix_groups(id->sid)) {
 		return NT_STATUS_OK;
 	}
 
-	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
-	if (!NT_STATUS_IS_OK(ret)) return ret;
+	sidkey = idmap_cache_sidkey(cache, id->sid);
+	if (sidkey == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	/* use sidkey as the local memory ctx */
-	ret = idmap_cache_build_idkey(sidkey, &idkey, id);
-	if (!NT_STATUS_IS_OK(ret)) {
+	idkey = idmap_cache_idkey(sidkey, id);
+	if (idkey == NULL) {
+		ret = NT_STATUS_NO_MEMORY;
 		goto done;
 	}
 
@@ -182,14 +165,16 @@ done:
 
 NTSTATUS idmap_cache_set_negative_sid(struct idmap_cache_ctx *cache, const struct id_map *id)
 {
-	NTSTATUS ret;
+	NTSTATUS ret = NT_STATUS_OK;
 	time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
 	TDB_DATA databuf;
 	char *sidkey;
 	char *valstr;
 
-	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
-	if (!NT_STATUS_IS_OK(ret)) return ret;
+	sidkey = idmap_cache_sidkey(cache, id->sid);
+	if (sidkey == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	/* use sidkey as the local memory ctx */
 	valstr = talloc_asprintf(sidkey, IDMAP_CACHE_DATA_FMT, (int)timeout, "IDMAP/NEGATIVE");
@@ -218,14 +203,16 @@ done:
 
 NTSTATUS idmap_cache_set_negative_id(struct idmap_cache_ctx *cache, const struct id_map *id)
 {
-	NTSTATUS ret;
+	NTSTATUS ret = NT_STATUS_OK;
 	time_t timeout = time(NULL) + lp_idmap_negative_cache_time();
 	TDB_DATA databuf;
 	char *idkey;
 	char *valstr;
 
-	ret = idmap_cache_build_idkey(cache, &idkey, id);
-	if (!NT_STATUS_IS_OK(ret)) return ret;
+	idkey = idmap_cache_idkey(cache, id);
+	if (idkey == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	/* use idkey as the local memory ctx */
 	valstr = talloc_asprintf(idkey, IDMAP_CACHE_DATA_FMT, (int)timeout, "IDMAP/NEGATIVE");
@@ -317,7 +304,7 @@ failed:
 
 NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
 {
-	NTSTATUS ret;
+	NTSTATUS ret = NT_STATUS_OK;
 	TDB_DATA databuf;
 	time_t t;
 	char *sidkey;
@@ -328,8 +315,10 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id)
 	/* make sure it is marked as not mapped by default */
 	id->status = ID_UNKNOWN;
 
-	ret = idmap_cache_build_sidkey(cache, &sidkey, id);
-	if (!NT_STATUS_IS_OK(ret)) return ret;
+	sidkey = idmap_cache_sidkey(cache, id->sid);
+	if (sidkey == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	databuf = tdb_fetch_bystring(cache->tdb, sidkey);
 
@@ -438,8 +427,10 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id)
 	/* make sure it is marked as unknown by default */
 	id->status = ID_UNKNOWN;
 
-	ret = idmap_cache_build_idkey(cache, &idkey, id);
-	if (!NT_STATUS_IS_OK(ret)) return ret;
+	idkey = idmap_cache_idkey(cache, id);
+	if (idkey == NULL) {
+		return NT_STATUS_NO_MEMORY;
+	}
 
 	databuf = tdb_fetch_bystring(cache->tdb, idkey);
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list