port latest changes from SAMBA_3_0 tree
[samba.git] / source3 / nsswitch / winbindd_cache.c
index 2da2a9e641d51ac9e938751e354858bd268e7add..2891a4fa683a8cbfa81eb3d52d4f09bb70af17c5 100644 (file)
@@ -106,7 +106,7 @@ static struct winbind_cache *get_cache(struct winbindd_domain *domain)
                case SEC_ADS: {
                        extern struct winbindd_methods ads_methods;
                        /* always obey the lp_security parameter for our domain */
-                       if ( strequal(lp_realm(), domain->alt_name) ) {
+                       if ( strequal(lp_realm(), domain->alt_name) || strequal(lp_workgroup(), domain->name) ) {
                                domain->backend = &ads_methods;
                                break;
                        }
@@ -256,7 +256,7 @@ static NTSTATUS fetch_cache_seqnum( struct winbindd_domain *domain, time_t now )
                return NT_STATUS_UNSUCCESSFUL;
        }
                
-       snprintf( key, sizeof(key), "SEQNUM/%s", domain->name );
+       fstr_sprintf( key, "SEQNUM/%s", domain->name );
        
        data = tdb_fetch_bystring( wcache->tdb, key );
        if ( !data.dptr || data.dsize!=8 ) {
@@ -295,7 +295,7 @@ static NTSTATUS store_cache_seqnum( struct winbindd_domain *domain )
                return NT_STATUS_UNSUCCESSFUL;
        }
                
-       snprintf( key_str, sizeof(key_str), "SEQNUM/%s", domain->name );
+       fstr_sprintf( key_str, "SEQNUM/%s", domain->name );
        key.dptr = key_str;
        key.dsize = strlen(key_str)+1;
        
@@ -328,6 +328,8 @@ static void refresh_sequence_number(struct winbindd_domain *domain, BOOL force)
        time_t t = time(NULL);
        unsigned cache_time = lp_winbind_cache_time();
 
+       get_cache( domain );
+
        /* trying to reconnect is expensive, don't do it too often */
        if (domain->sequence_number == DOM_SEQUENCE_NONE) {
                cache_time *= 8;