Remove cli_cm_set_dest_ss() - removes the global dest_ss
authorJeremy Allison <jra@samba.org>
Fri, 2 Jan 2009 20:49:49 +0000 (12:49 -0800)
committerJeremy Allison <jra@samba.org>
Fri, 2 Jan 2009 20:49:49 +0000 (12:49 -0800)
from libsmb/clidfs.c. Keep the '-I<address>' option in
smbclient working. The intent is to remove all globals
from libsmb/clidfs.c.
Jeremy.

source3/client/client.c
source3/libsmb/clidfs.c

index c63921aa1afa64bd167d464bc7a269067b451877..529f21ab302d649d9dc0d475d3f40d9d8f15b77f 100644 (file)
@@ -78,6 +78,7 @@ static bool showacls = false;
 bool lowercase = false;
 
 static struct sockaddr_storage dest_ss;
+static char dest_ss_str[INET6_ADDRSTRLEN];
 
 #define SEPARATORS " \t\n\r"
 
@@ -4043,7 +4044,8 @@ static int process_command_string(const char *cmd_in)
        /* establish the connection if not already */
 
        if (!cli) {
-               cli = cli_cm_open(talloc_tos(), NULL, desthost,
+               cli = cli_cm_open(talloc_tos(), NULL,
+                               have_ip ? dest_ss_str : desthost,
                                service, true, smb_encrypt);
                if (!cli) {
                        return 1;
@@ -4508,7 +4510,8 @@ static int process(const char *base_directory)
        int rc = 0;
 
        cli = cli_cm_open(talloc_tos(), NULL,
-                       desthost, service, true, smb_encrypt);
+                       have_ip ? dest_ss_str : desthost,
+                       service, true, smb_encrypt);
        if (!cli) {
                return 1;
        }
@@ -4586,7 +4589,8 @@ static int do_tar_op(const char *base_directory)
        /* do we already have a connection? */
        if (!cli) {
                cli = cli_cm_open(talloc_tos(), NULL,
-                       desthost, service, true, smb_encrypt);
+                       have_ip ? dest_ss_str : desthost,
+                       service, true, smb_encrypt);
                if (!cli)
                        return 1;
        }
@@ -4792,8 +4796,7 @@ static int do_message_op(struct user_auth_info *auth_info)
                                        exit(1);
                                }
                                have_ip = true;
-
-                               cli_cm_set_dest_ss(&dest_ss);
+                               print_sockaddr(dest_ss_str, sizeof(dest_ss_str), &dest_ss);
                        }
                        break;
                case 'E':
index 4597e63c98f4243a8c8f192c921564e3b5e62653..ac68700fd087f1e11d22bf5f4f5d5a083c3d8fa1 100644 (file)
@@ -54,8 +54,6 @@ static void cm_set_password(const char *newpass);
 
 static int port;
 static int name_type = 0x20;
-static bool have_ip;
-static struct sockaddr_storage dest_ss;
 
 static struct client_connection *connections;
 
@@ -133,8 +131,11 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
        }
        sharename = servicename;
        if (*sharename == '\\') {
-               server = sharename+2;
-               sharename = strchr_m(server,'\\');
+               sharename += 2;
+               if (server == NULL) {
+                       server = sharename;
+               }
+               sharename = strchr_m(sharename,'\\');
                if (!sharename) {
                        return NULL;
                }
@@ -151,8 +152,6 @@ static struct cli_state *do_connect(TALLOC_CTX *ctx,
 
  again:
        zero_sockaddr(&ss);
-       if (have_ip)
-               ss = dest_ss;
 
        /* have to open a new connection */
        if (!(c=cli_initialise()) || (cli_set_port(c, port) != port)) {
@@ -550,15 +549,6 @@ void cli_cm_set_fallback_after_kerberos(void)
        cm_creds.fallback_after_kerberos = true;
 }
 
-/****************************************************************************
-****************************************************************************/
-
-void cli_cm_set_dest_ss(struct sockaddr_storage *pss)
-{
-       dest_ss = *pss;
-       have_ip = true;
-}
-
 /**********************************************************************
  split a dfs path into the server, share name, and extrapath components
 **********************************************************************/