s3:lib: add caching to set_current_user_info()
authorStefan Metzmacher <metze@samba.org>
Fri, 25 May 2018 11:40:12 +0000 (13:40 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 18 Jun 2018 06:59:15 +0000 (08:59 +0200)
Currently we do that in the caller, but we use global
cache anyway, so we can simplify the callers.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/lib/substitute.c

index 9fdc5ca1edc7290de4802c2430af75cc4962b409..ea227c5ab68d3d4c5f9cdbb7608b6e0e0944c8e8 100644 (file)
@@ -247,6 +247,17 @@ static const char *get_smb_user_name(void)
 void set_current_user_info(const char *smb_name, const char *unix_name,
                           const char *domain)
 {
+       static const void *last_smb_name;
+       static const void *last_unix_name;
+       static const void *last_domain;
+
+       if (likely(last_smb_name == smb_name &&
+           last_unix_name == unix_name &&
+           last_domain == domain))
+       {
+               return;
+       }
+
        fstrcpy(current_user_info.smb_name, smb_name);
        fstrcpy(current_user_info.unix_name, unix_name);
        fstrcpy(current_user_info.domain, domain);
@@ -255,6 +266,10 @@ void set_current_user_info(const char *smb_name, const char *unix_name,
         * has already been sanitised in register_existing_vuid. */
 
        sub_set_smb_name(current_user_info.smb_name);
+
+       last_smb_name = smb_name;
+       last_unix_name = unix_name;
+       last_domain = domain;
 }
 
 /*******************************************************************