Changeset 745 for trunk/server/source3/libads/dns.c
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source3/libads/dns.c
r414 r745 20 20 21 21 #include "includes.h" 22 #include "libads/dns.h" 23 #include "../librpc/ndr/libndr.h" 22 24 23 25 /* AIX resolv.h uses 'class' in struct ns_rr */ … … 297 299 static time_t last_dns_check = 0; 298 300 static NTSTATUS last_dns_status = NT_STATUS_OK; 299 time_t now = time (NULL);301 time_t now = time_mono(NULL); 300 302 301 303 /* Try to prevent bursts of DNS lookups if the server is down */ … … 332 334 "talloc() failed!\n")); 333 335 last_dns_status = NT_STATUS_NO_MEMORY; 334 last_dns_check = time (NULL);336 last_dns_check = time_mono(NULL); 335 337 return last_dns_status; 336 338 } … … 351 353 last_dns_status = NT_STATUS_CONNECTION_REFUSED; 352 354 } 353 last_dns_check = time (NULL);355 last_dns_check = time_mono(NULL); 354 356 return last_dns_status; 355 357 } … … 365 367 TALLOC_FREE( buffer ); 366 368 last_dns_status = NT_STATUS_BUFFER_TOO_SMALL; 367 last_dns_check = time (NULL);369 last_dns_check = time_mono(NULL); 368 370 return last_dns_status; 369 371 } … … 378 380 *resp_length = resp_len; 379 381 380 last_dns_check = time (NULL);382 last_dns_check = time_mono(NULL); 381 383 last_dns_status = NT_STATUS_OK; 382 384 return last_dns_status; … … 564 566 } 565 567 566 qsort( dcs, idx, sizeof(struct dns_rr_srv), QSORT_CASTdnssrvcmp );568 TYPESAFE_QSORT(dcs, idx, dnssrvcmp ); 567 569 568 570 *dclist = dcs; … … 727 729 } 728 730 729 /****************************************************************************730 Store and fetch the AD client sitename.731 ****************************************************************************/732 733 #define SITENAME_KEY "AD_SITENAME/DOMAIN/%s"734 735 static char *sitename_key(const char *realm)736 {737 char *keystr;738 739 if (asprintf_strupper_m(&keystr, SITENAME_KEY, realm) == -1) {740 return NULL;741 }742 743 return keystr;744 }745 746 747 /****************************************************************************748 Store the AD client sitename.749 We store indefinately as every new CLDAP query will re-write this.750 ****************************************************************************/751 752 bool sitename_store(const char *realm, const char *sitename)753 {754 time_t expire;755 bool ret = False;756 char *key;757 758 if (!realm || (strlen(realm) == 0)) {759 DEBUG(0,("sitename_store: no realm\n"));760 return False;761 }762 763 key = sitename_key(realm);764 765 if (!sitename || (sitename && !*sitename)) {766 DEBUG(5,("sitename_store: deleting empty sitename!\n"));767 ret = gencache_del(key);768 SAFE_FREE(key);769 return ret;770 }771 772 expire = get_time_t_max(); /* Store indefinately. */773 774 DEBUG(10,("sitename_store: realm = [%s], sitename = [%s], expire = [%u]\n",775 realm, sitename, (unsigned int)expire ));776 777 ret = gencache_set( key, sitename, expire );778 SAFE_FREE(key);779 return ret;780 }781 782 /****************************************************************************783 Fetch the AD client sitename.784 Caller must free.785 ****************************************************************************/786 787 char *sitename_fetch(const char *realm)788 {789 char *sitename = NULL;790 time_t timeout;791 bool ret = False;792 const char *query_realm;793 char *key;794 795 if (!realm || (strlen(realm) == 0)) {796 query_realm = lp_realm();797 } else {798 query_realm = realm;799 }800 801 key = sitename_key(query_realm);802 803 ret = gencache_get( key, &sitename, &timeout );804 SAFE_FREE(key);805 if ( !ret ) {806 DEBUG(5,("sitename_fetch: No stored sitename for %s\n",807 query_realm));808 } else {809 DEBUG(5,("sitename_fetch: Returning sitename for %s: \"%s\"\n",810 query_realm, sitename ));811 }812 return sitename;813 }814 815 /****************************************************************************816 Did the sitename change ?817 ****************************************************************************/818 819 bool stored_sitename_changed(const char *realm, const char *sitename)820 {821 bool ret = False;822 823 char *new_sitename;824 825 if (!realm || (strlen(realm) == 0)) {826 DEBUG(0,("stored_sitename_changed: no realm\n"));827 return False;828 }829 830 new_sitename = sitename_fetch(realm);831 832 if (sitename && new_sitename && !strequal(sitename, new_sitename)) {833 ret = True;834 } else if ((sitename && !new_sitename) ||835 (!sitename && new_sitename)) {836 ret = True;837 }838 SAFE_FREE(new_sitename);839 return ret;840 }841 842 731 /******************************************************************** 843 732 Query with optional sitename.
Note:
See TracChangeset
for help on using the changeset viewer.