Author: vlendec
Date: 2005-10-28 21:08:31 +0000 (Fri, 28 Oct 2005)
New Revision: 11381

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11381

Log:
Correctly connect to 445 and 139 after a successful getdcname.

Volker

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    2005-10-28 20:36:27 UTC 
(rev 11380)
+++ branches/SAMBA_3_0/source/nsswitch/winbindd_cm.c    2005-10-28 21:08:31 UTC 
(rev 11381)
@@ -766,10 +766,17 @@
                result = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
 
                if ((strlen(domain->dcname) > 0) &&
-                   NT_STATUS_IS_OK(check_negative_conn_cache(domain->name,
-                                                             domain->dcname))) 
{
+                   NT_STATUS_IS_OK(check_negative_conn_cache(
+                                           domain->name, domain->dcname)) &&
+                   (resolve_name(domain->dcname, &domain->dcaddr.sin_addr,
+                                 0x20))) {
                        int dummy;
-                       if (!open_any_socket_out(&domain->dcaddr, 1, 10000,
+                       struct sockaddr_in addrs[2];
+                       addrs[0] = domain->dcaddr;
+                       addrs[0].sin_port = htons(445);
+                       addrs[1] = domain->dcaddr;
+                       addrs[1].sin_port = htons(139);
+                       if (!open_any_socket_out(addrs, 2, 10000,
                                                 &dummy, &fd)) {
                                fd = -1;
                        }

Modified: trunk/source/nsswitch/winbindd_cm.c
===================================================================
--- trunk/source/nsswitch/winbindd_cm.c 2005-10-28 20:36:27 UTC (rev 11380)
+++ trunk/source/nsswitch/winbindd_cm.c 2005-10-28 21:08:31 UTC (rev 11381)
@@ -766,10 +766,17 @@
                result = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
 
                if ((strlen(domain->dcname) > 0) &&
-                   NT_STATUS_IS_OK(check_negative_conn_cache(domain->name,
-                                                             domain->dcname))) 
{
+                   NT_STATUS_IS_OK(check_negative_conn_cache(
+                                           domain->name, domain->dcname)) &&
+                   (resolve_name(domain->dcname, &domain->dcaddr.sin_addr,
+                                 0x20))) {
                        int dummy;
-                       if (!open_any_socket_out(&domain->dcaddr, 1, 10000,
+                       struct sockaddr_in addrs[2];
+                       addrs[0] = domain->dcaddr;
+                       addrs[0].sin_port = htons(445);
+                       addrs[1] = domain->dcaddr;
+                       addrs[1].sin_port = htons(139);
+                       if (!open_any_socket_out(addrs, 2, 10000,
                                                 &dummy, &fd)) {
                                fd = -1;
                        }

Reply via email to