Author: vlendec
Date: 2006-01-16 16:28:14 +0000 (Mon, 16 Jan 2006)
New Revision: 12960

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

Log:
One thing that has annoyed me for ages is the fact that you can't run
smbclient against smbd -i anymore, smbclient opens two connections.

This makes cli_dfs_get_referral use the already opened connection.

Jerry, could you please look at this?

Thanks,

Volker

Modified:
   trunk/source/libsmb/clidfs.c


Changeset:
Modified: trunk/source/libsmb/clidfs.c
===================================================================
--- trunk/source/libsmb/clidfs.c        2006-01-16 15:23:06 UTC (rev 12959)
+++ trunk/source/libsmb/clidfs.c        2006-01-16 16:28:14 UTC (rev 12960)
@@ -682,12 +682,15 @@
        CLIENT_DFS_REFERRAL *refs = NULL;
        size_t num_refs;
        uint16 consumed;
-       struct cli_state *cli_ipc;
        pstring fullpath;
+       BOOL res;
+       uint16 cnum;
        
        if ( !cli || !sharename )
                return False;
 
+       cnum = cli->cnum;
+
        /* special case.  never check for a referral on the IPC$ share */
 
        if ( strequal( sharename, "IPC$" ) )
@@ -699,14 +702,21 @@
 
        /* check for the referral */
 
-       if ( !(cli_ipc = cli_cm_open( cli->desthost, "IPC$", False )) )
+       if (!cli_send_tconX(cli, "IPC$", "IPC", NULL, 0)) {
                return False;
-       
-       if ( !cli_dfs_get_referral(cli_ipc, fullpath, &refs, &num_refs, 
&consumed) 
-               || !num_refs )
-       {
+       }
+
+       res = cli_dfs_get_referral(cli, fullpath, &refs, &num_refs, &consumed);
+
+       if (!cli_tdis(cli)) {
                return False;
        }
+
+       cli->cnum = cnum;
+               
+       if (!res || !num_refs ) {
+               return False;
+       }
        
        split_dfs_path( refs[0].dfspath, newserver, newshare );
 

Reply via email to