diff --git a/source3/libsmb/clidfs.c b/source3/libsmb/clidfs.c index 4342a3b1d1b..440230ddccc 100644 --- a/source3/libsmb/clidfs.c +++ b/source3/libsmb/clidfs.c @@ -151,6 +151,10 @@ static NTSTATUS do_connect(TALLOC_CTX *ctx, int signing_state = get_cmdline_auth_info_signing_state(auth_info); struct cli_credentials *creds = NULL; + DBG_DEBUG("Making new connection to server %s share %s\n", + server, + share); + if (force_encrypt) { signing_state = SMB_SIGNING_REQUIRED; } @@ -380,13 +384,26 @@ static struct cli_state *cli_cm_find(struct cli_state *cli, return NULL; } + DBG_DEBUG("Looking for connection to server %s share %s\n", + server, + share); + /* Search to the start of the list. */ for (p = cli; p; p = DLIST_PREV(p)) { const char *remote_name = smbXcli_conn_remote_name(p->conn); + DBG_DEBUG("List entry server %s share %s\n", + remote_name, + p->share); + if (strequal(server, remote_name) && strequal(share,p->share)) { + + DBG_DEBUG("Found match server %s share %s\n", + remote_name, + p->share); + return p; } } @@ -396,8 +413,17 @@ static struct cli_state *cli_cm_find(struct cli_state *cli, const char *remote_name = smbXcli_conn_remote_name(p->conn); + DBG_DEBUG("List entry server %s share %s\n", + remote_name, + p->share); + if (strequal(server, remote_name) && strequal(share,p->share)) { + + DBG_DEBUG("Found match server %s share %s\n", + remote_name, + p->share); + return p; } } @@ -438,6 +464,10 @@ NTSTATUS cli_cm_open(TALLOC_CTX *ctx, return NT_STATUS_INVALID_PARAMETER; } + DBG_DEBUG("Calling cli_cm_connect on: server %s share %s\n", + server, + share); + status = cli_cm_connect(ctx, referring_cli, server, @@ -513,6 +543,9 @@ static bool split_dfs_path(TALLOC_CTX *ctx, goto fail; } + DBG_DEBUG("split_dfs_path: |%s|\n", + nodepath); + if ( path[0] != '\\' ) { goto fail; } @@ -548,6 +581,10 @@ static bool split_dfs_path(TALLOC_CTX *ctx, goto fail; } + DBG_DEBUG("server: |%s|\n", *pp_server); + DBG_DEBUG("share: |%s|\n", *pp_share); + DBG_DEBUG("extrapath: |%s|\n", *pp_extrapath); + TALLOC_FREE(path); return true; @@ -954,6 +991,9 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx, return NT_STATUS_NO_MEMORY; } + DBG_DEBUG("Calling cli_qpathinfo_basic on: dfs_path %s\n", + dfs_path); + status = cli_qpathinfo_basic( rootcli, dfs_path, &sbuf, &attributes); if (NT_STATUS_IS_OK(status)) { /* This is an ordinary path, just return it. */ @@ -1000,6 +1040,9 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx, return status; } + DBG_DEBUG("Calling cli_dfs_get_referral on dfs_path %s\n", + dfs_path); + status = cli_dfs_get_referral(ctx, cli_ipc, dfs_path, &refs, &num_refs, &consumed); if (!NT_STATUS_IS_OK(status)) { @@ -1029,6 +1072,10 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx, return NT_STATUS_NOT_FOUND; } + DBG_DEBUG("Calling cli_cm_find on server %s share %s\n", + dfs_refs[count].server, + dfs_refs[count].share); + ccli = cli_cm_find(rootcli, dfs_refs[count].server, dfs_refs[count].share); if (ccli != NULL) { @@ -1043,6 +1090,11 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx, * referral server in the list. */ for (count = 0; (ccli == NULL) && (count < num_refs); count++) { + + DBG_DEBUG("Calling cli_cm_connect on: server %s share %s\n", + dfs_refs[count].server, + dfs_refs[count].share); + /* Connect to the target server & share */ status = cli_cm_connect(ctx, rootcli, dfs_refs[count].server,