svn commit: samba r14748 - branches/SAMBA_3_0/source/nsswitch
trunk/source/nsswitch
jerry at samba.org
jerry at samba.org
Tue Mar 28 13:34:13 GMT 2006
Author: jerry
Date: 2006-03-28 13:34:13 +0000 (Tue, 28 Mar 2006)
New Revision: 14748
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=14748
Log:
store the name/ip address combination when we doa reverse look up in case future forward lookups would fail
Modified:
branches/SAMBA_3_0/source/nsswitch/winbindd_cm.c
trunk/source/nsswitch/winbindd_cm.c
Changeset:
Modified: branches/SAMBA_3_0/source/nsswitch/winbindd_cm.c
===================================================================
--- branches/SAMBA_3_0/source/nsswitch/winbindd_cm.c 2006-03-27 19:50:46 UTC (rev 14747)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_cm.c 2006-03-28 13:34:13 UTC (rev 14748)
@@ -581,23 +581,31 @@
static void dcip_to_name( const char *domainname, const char *realm,
const DOM_SID *sid, struct in_addr ip, fstring name )
{
+ struct ip_service ip_list;
+ ip_list.ip = ip;
+ ip_list.port = 0;
+
/* try GETDC requests first */
if (send_getdc_request(ip, domainname, sid)) {
int i;
smb_msleep(100);
for (i=0; i<5; i++) {
- if (receive_getdc_response(ip, domainname, name))
+ if (receive_getdc_response(ip, domainname, name)) {
+ namecache_store(name, 0x20, 1, &ip_list);
return;
+ }
smb_msleep(500);
}
}
/* try node status request */
- if ( name_status_find(domainname, 0x1c, 0x20, ip, name) )
+ if ( name_status_find(domainname, 0x1c, 0x20, ip, name) ) {
+ namecache_store(name, 0x20, 1, &ip_list);
return;
+ }
/* backup in case the netbios stuff fails */
@@ -627,6 +635,7 @@
}
fstrcpy(name, ads->config.ldap_server_name);
+ namecache_store(name, 0x20, 1, &ip_list);
ads_destroy( &ads );
}
Modified: trunk/source/nsswitch/winbindd_cm.c
===================================================================
--- trunk/source/nsswitch/winbindd_cm.c 2006-03-27 19:50:46 UTC (rev 14747)
+++ trunk/source/nsswitch/winbindd_cm.c 2006-03-28 13:34:13 UTC (rev 14748)
@@ -581,23 +581,31 @@
static void dcip_to_name( const char *domainname, const char *realm,
const DOM_SID *sid, struct in_addr ip, fstring name )
{
+ struct ip_service ip_list;
+ ip_list.ip = ip;
+ ip_list.port = 0;
+
/* try GETDC requests first */
if (send_getdc_request(ip, domainname, sid)) {
int i;
smb_msleep(100);
for (i=0; i<5; i++) {
- if (receive_getdc_response(ip, domainname, name))
+ if (receive_getdc_response(ip, domainname, name)) {
+ namecache_store(name, 0x20, 1, &ip_list);
return;
+ }
smb_msleep(500);
}
}
/* try node status request */
- if ( name_status_find(domainname, 0x1c, 0x20, ip, name) )
+ if ( name_status_find(domainname, 0x1c, 0x20, ip, name) ) {
+ namecache_store(name, 0x20, 1, &ip_list);
return;
+ }
/* backup in case the netbios stuff fails */
@@ -627,6 +635,7 @@
}
fstrcpy(name, ads->config.ldap_server_name);
+ namecache_store(name, 0x20, 1, &ip_list);
ads_destroy( &ads );
}
More information about the samba-cvs
mailing list