Ignore:
Timestamp:
May 27, 2009, 9:09:42 AM (16 years ago)
Author:
Herwig Bauernfeind
Message:

Update 3.2 branch to 3.2.8

File:
1 edited

Legend:

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

    r228 r232  
    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_strupper_m(&keystr, SAFKEY_FMT, domain);
     45
     46        return keystr;
     47}
     48
     49static char *saf_join_key(const char *domain)
     50{
     51        char *keystr;
     52
     53        asprintf_strupper_m(&keystr, SAFJOINKEY_FMT, domain);
    4354
    4455        return keystr;
     
    7081
    7182        key = saf_key( domain );
    72         expire = time( NULL ) + SAF_TTL;
     83        expire = time( NULL ) + lp_parm_int(-1, "saf","ttl", SAF_TTL);
    7384
    7485        DEBUG(10,("saf_store: domain = [%s], server = [%s], expire = [%u]\n",
     86                domain, servername, (unsigned int)expire ));
     87
     88        ret = gencache_set( key, servername, expire );
     89
     90        SAFE_FREE( key );
     91
     92        return ret;
     93}
     94
     95bool saf_join_store( const char *domain, const char *servername )
     96{
     97        char *key;
     98        time_t expire;
     99        bool ret = False;
     100
     101        if ( !domain || !servername ) {
     102                DEBUG(2,("saf_join_store: Refusing to store empty domain or servername!\n"));
     103                return False;
     104        }
     105
     106        if ( (strlen(domain) == 0) || (strlen(servername) == 0) ) {
     107                DEBUG(0,("saf_join_store: refusing to store 0 length domain or servername!\n"));
     108                return False;
     109        }
     110
     111        if ( !gencache_init() )
     112                return False;
     113
     114        key = saf_join_key( domain );
     115        expire = time( NULL ) + lp_parm_int(-1, "saf","join ttl", SAFJOIN_TTL);
     116
     117        DEBUG(10,("saf_join_store: domain = [%s], server = [%s], expire = [%u]\n",
    75118                domain, servername, (unsigned int)expire ));
    76119
     
    95138                return False;
    96139
     140        key = saf_join_key(domain);
     141        ret = gencache_del(key);
     142        SAFE_FREE(key);
     143
     144        if (ret) {
     145                DEBUG(10,("saf_delete[join]: domain = [%s]\n", domain ));
     146        }
     147
    97148        key = saf_key(domain);
    98149        ret = gencache_del(key);
     150        SAFE_FREE(key);
    99151
    100152        if (ret) {
    101153                DEBUG(10,("saf_delete: domain = [%s]\n", domain ));
    102154        }
    103 
    104         SAFE_FREE( key );
    105155
    106156        return ret;
     
    124174        if ( !gencache_init() )
    125175                return False;
     176
     177        key = saf_join_key( domain );
     178
     179        ret = gencache_get( key, &server, &timeout );
     180
     181        SAFE_FREE( key );
     182
     183        if ( ret ) {
     184                DEBUG(5,("saf_fetch[join]: Returning \"%s\" for \"%s\" domain\n",
     185                        server, domain ));
     186                return server;
     187        }
    126188
    127189        key = saf_key( domain );
     
    20992161        status = get_dc_list(domain, sitename, ip_list,
    21002162                        count, lookup_type, &ordered);
     2163        if (NT_STATUS_EQUAL(status, NT_STATUS_NO_LOGON_SERVERS)
     2164            && sitename) {
     2165                DEBUG(3,("get_sorted_dc_list: no server for name %s available"
     2166                         " in site %s, fallback to all servers\n",
     2167                         domain, sitename));
     2168                status = get_dc_list(domain, NULL, ip_list,
     2169                                     count, lookup_type, &ordered);
     2170        }
     2171
    21012172        if (!NT_STATUS_IS_OK(status)) {
    21022173                SAFE_FREE(*ip_list);
Note: See TracChangeset for help on using the changeset viewer.