s3-utils: Use ads_do_search_retry in net ads search
[ddiss/samba.git] / source3 / utils / net_ads.c
index 45238049a6bb694cb258e8c4a0171373eebf199e..f751d688aa5219bdfb53f894b7e58bb636a44d4b 100644 (file)
@@ -36,6 +36,7 @@
 #include "secrets.h"
 #include "krb5_env.h"
 #include "../libcli/security/security.h"
+#include "libsmb/libsmb.h"
 
 #ifdef HAVE_ADS
 
@@ -1121,7 +1122,7 @@ static WERROR check_ads_config( void )
 *******************************************************************/
 
 #if defined(WITH_DNS_UPDATES)
-#include "dns.h"
+#include "../lib/addns/dns.h"
 DNS_ERROR DoDNSUpdate(char *pszServerName,
                      const char *pszDomainName, const char *pszHostName,
                      const struct sockaddr_storage *sslist,
@@ -1412,6 +1413,11 @@ int net_ads_join(struct net_context *c, int argc, const char **argv)
        r->in.msg_ctx           = c->msg_ctx;
 
        werr = libnet_Join(ctx, r);
+       if (W_ERROR_EQUAL(werr, WERR_DCNOTFOUND) &&
+           strequal(domain, lp_realm())) {
+               r->in.domain_name = lp_workgroup();
+               werr = libnet_Join(ctx, r);
+       }
        if (!W_ERROR_IS_OK(werr)) {
                goto fail;
        }
@@ -1830,7 +1836,7 @@ static int net_ads_printer_publish(struct net_context *c, int argc, const char *
                                        Undefined);
 
        if (NT_STATUS_IS_ERR(nt_status)) {
-               d_fprintf(stderr, _("Unable to open a connnection to %s to "
+               d_fprintf(stderr, _("Unable to open a connection to %s to "
                                    "obtain data for %s\n"),
                          servername, printername);
                ads_destroy(&ads);
@@ -1879,7 +1885,7 @@ static int net_ads_printer_publish(struct net_context *c, int argc, const char *
 
        nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_spoolss.syntax_id, &pipe_hnd);
        if (!NT_STATUS_IS_OK(nt_status)) {
-               d_fprintf(stderr, _("Unable to open a connnection to the spoolss pipe on %s\n"),
+               d_fprintf(stderr, _("Unable to open a connection to the spoolss pipe on %s\n"),
                         servername);
                SAFE_FREE(prt_dn);
                ads_destroy(&ads);
@@ -2201,7 +2207,7 @@ static int net_ads_search(struct net_context *c, int argc, const char **argv)
        ldap_exp = argv[0];
        attrs = (argv + 1);
 
-       rc = ads_do_search_all(ads, ads->config.bind_path,
+       rc = ads_do_search_retry(ads, ads->config.bind_path,
                               LDAP_SCOPE_SUBTREE,
                               ldap_exp, attrs, &res);
        if (!ADS_ERR_OK(rc)) {