Ignore:
Timestamp:
Mar 11, 2009, 9:14:55 AM (16 years ago)
Author:
Paul Smedley
Message:

Add 'missing' 3.0.34 diffs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.0/source/libsmb/namequery.c

    r140 r165  
    3535#define SAFKEY_FMT      "SAF/DOMAIN/%s"
    3636#define SAF_TTL         900
     37#define SAFJOINKEY_FMT  "SAFJOIN/DOMAIN/%s"
     38#define SAFJOIN_TTL     3600
    3739
    3840static char *saf_key(const char *domain)
     
    4143       
    4244        asprintf( &keystr, SAFKEY_FMT, strupper_static(domain) );
     45
     46        return keystr;
     47}
     48
     49static char *saf_join_key(const char *domain)
     50{
     51        char *keystr;
     52
     53        asprintf( &keystr, SAFJOINKEY_FMT, strupper_static(domain) );
    4354
    4455        return keystr;
     
    6879       
    6980        key = saf_key( domain );
    70         expire = time( NULL ) + SAF_TTL;
     81        expire = time( NULL ) + lp_parm_int(-1, "saf","ttl", SAF_TTL);
    7182       
    7283       
     
    8192}
    8293
     94BOOL saf_join_store( const char *domain, const char *servername )
     95{
     96        char *key;
     97        time_t expire;
     98        BOOL ret = False;
     99
     100        if ( !domain || !servername ) {
     101                DEBUG(2,("saf_join_store: Refusing to store empty domain or servername!\n"));
     102                return False;
     103        }
     104
     105        if ( (strlen(domain) == 0) || (strlen(servername) == 0) ) {
     106                DEBUG(0,("saf_join_store: refusing to store 0 length domain or servername!\n"));
     107                return False;
     108        }
     109
     110        if ( !gencache_init() )
     111                return False;
     112
     113        key = saf_join_key( domain );
     114        expire = time( NULL ) + lp_parm_int(-1, "saf","join ttl", SAFJOIN_TTL);
     115
     116        DEBUG(10,("saf_join_store: domain = [%s], server = [%s], expire = [%u]\n",
     117                domain, servername, (unsigned int)expire ));
     118
     119        ret = gencache_set( key, servername, expire );
     120
     121        SAFE_FREE( key );
     122
     123        return ret;
     124}
     125
    83126BOOL saf_delete( const char *domain )
    84127{
     
    94137                return False;
    95138       
     139        key = saf_join_key(domain);
     140        ret = gencache_del(key);
     141        SAFE_FREE(key);
     142
     143        if (ret) {
     144                DEBUG(10,("saf_delete[join]: domain = [%s]\n", domain ));
     145        }
     146
    96147        key = saf_key(domain);
    97148        ret = gencache_del(key);
    98        
     149        SAFE_FREE(key);
     150
    99151        if (ret) {
    100152                DEBUG(10,("saf_delete: domain = [%s]\n", domain ));             
    101153        }
    102 
    103         SAFE_FREE( key );
    104154
    105155        return ret;
     
    123173        if ( !gencache_init() )
    124174                return False;
    125        
     175
     176        key = saf_join_key( domain );
     177
     178        ret = gencache_get( key, &server, &timeout );
     179
     180        SAFE_FREE( key );
     181
     182        if ( ret ) {
     183                DEBUG(5,("saf_fetch[join]: Returning \"%s\" for \"%s\" domain\n",
     184                        server, domain ));
     185                return server;
     186        }
     187
    126188        key = saf_key( domain );
    127189       
     
    16491711
    16501712        status = get_dc_list(domain, sitename, ip_list, count, lookup_type, &ordered);
     1713        if (NT_STATUS_EQUAL(status, NT_STATUS_NO_LOGON_SERVERS) && sitename) {
     1714                DEBUG(3,("get_sorted_dc_list: no server for name %s available"
     1715                         " in site %s, fallback to all servers\n",
     1716                         domain, sitename));
     1717                status = get_dc_list(domain, NULL, ip_list, count,
     1718                                     lookup_type, &ordered);
     1719        }
     1720
    16511721        if (!NT_STATUS_IS_OK(status)) {
    16521722                return status;
Note: See TracChangeset for help on using the changeset viewer.