Remove most of the remaining globals out of lib/util_sock.c.
authorJeremy Allison <jra@samba.org>
Sun, 4 Nov 2007 06:20:10 +0000 (23:20 -0700)
committerJeremy Allison <jra@samba.org>
Sun, 4 Nov 2007 06:20:10 +0000 (23:20 -0700)
I have a plan for dealing with the remaining..... Watch
this space.
Jeremy.
(This used to be commit 963fc7685212689f02b3adcc05b4273ee5c382d4)

15 files changed:
source3/auth/pampass.c
source3/lib/dummysmbd.c
source3/lib/substitute.c
source3/lib/util_sock.c
source3/modules/vfs_expand_msdfs.c
source3/printing/print_cups.c
source3/printing/print_iprint.c
source3/rpc_server/srv_netlog_nt.c
source3/smbd/connection.c
source3/smbd/process.c
source3/smbd/server.c
source3/smbd/service.c
source3/smbd/session.c
source3/smbd/sesssetup.c
source3/torture/vfstest.c

index c7ec79b969469fe801ebd1f2915df72850cc0777..739e0a78fdf6c528ddcb1dd500211f955a113a90 100644 (file)
@@ -468,9 +468,9 @@ static bool smb_pam_start(pam_handle_t **pamh, const char *user, const char *rho
        }
 
        if (rhost == NULL) {
-               our_rhost = client_name();
+               our_rhost = client_name(get_client_fd());
                if (strequal(our_rhost,"UNKNOWN"))
-                       our_rhost = client_addr(addr,sizeof(addr));
+                       our_rhost = client_addr(get_client_fd(),addr,sizeof(addr));
        } else {
                our_rhost = rhost;
        }
index 038a945c9295653076c024ed445dfab6b1142179..e3b179b7634efda38818eb5a72f01428d54a55f8 100644 (file)
 
 #include "includes.h"
 
+int get_client_fd(void)
+{
+       return -1;
+}
+
 int find_service(fstring service)
 {
        return -1;
index bd15399b139a931878f17b5fc2a01751cc64c777..7f357e9f67f4fcc9aa32e91703bb6755156da4aa 100644 (file)
@@ -52,7 +52,8 @@ void set_local_machine_name(const char* local_name, bool perm)
         */
 
        if ( strequal(tmp_local_machine, "*SMBSERVER") || strequal(tmp_local_machine, "*SMBSERV") )  {
-               fstrcpy( local_machine, client_socket_addr(addr, sizeof(addr)) );
+               fstrcpy( local_machine,
+                       client_socket_addr(get_client_fd(), addr, sizeof(addr)) );
                return;
        }
 
@@ -497,11 +498,11 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
                        break;
                case 'I' :
                        a_string = realloc_string_sub(a_string, "%I",
-                                               client_addr(addr, sizeof(addr)));
+                                       client_addr(get_client_fd(),addr, sizeof(addr)));
                        break;
                case 'i': 
                        a_string = realloc_string_sub( a_string, "%i",
-                                               client_socket_addr(addr, sizeof(addr)) );
+                                       client_socket_addr(get_client_fd(), addr, sizeof(addr)) );
                        break;
                case 'L' : 
                        if ( StrnCaseCmp(p, "%LOGONSERVER%", strlen("%LOGONSERVER%")) == 0 ) {
@@ -517,7 +518,7 @@ char *alloc_sub_basic(const char *smb_name, const char *domain_name,
                        a_string = realloc_string_sub(a_string, "%N", automount_server(smb_name));
                        break;
                case 'M' :
-                       a_string = realloc_string_sub(a_string, "%M", client_name());
+                       a_string = realloc_string_sub(a_string, "%M", client_name(get_client_fd()));
                        break;
                case 'R' :
                        a_string = realloc_string_sub(a_string, "%R", remote_proto);
index b31736430e5a13e7161ddad4c7968c823176b3f6..4b39e321159096d176c15d8a31a9056ad7900b84 100644 (file)
 
 #include "includes.h"
 
-/* the following 3 client_*() functions are nasty ways of allowing
-   some generic functions to get info that really should be hidden in
-   particular modules */
-static int client_fd = -1;
-/* What to print out on a client disconnect error. */
-static char client_ip_string[INET6_ADDRSTRLEN];
-
 /****************************************************************************
  Return true if a string could be an IPv4 address.
 ****************************************************************************/
@@ -572,19 +565,6 @@ char *print_canonical_sockaddr(TALLOC_CTX *ctx,
        return dest;
 }
 
-/****************************************************************************
- Set the global client_fd variable.
-****************************************************************************/
-
-void client_setfd(int fd)
-{
-       char addr[INET6_ADDRSTRLEN];
-       client_fd = fd;
-       safe_strcpy(client_ip_string,
-                       get_peer_addr(client_fd,addr,sizeof(addr)),
-                       sizeof(client_ip_string)-1);
-}
-
 /****************************************************************************
  Return the string of an IP address (IPv4 or IPv6).
 ****************************************************************************/
@@ -614,6 +594,8 @@ static const char *get_socket_addr(int fd, char *addr_buf, size_t addr_len)
        return print_sockaddr_len(addr_buf, addr_len, &sa, length);
 }
 
+#if 0
+/* Not currently used. JRA. */
 /****************************************************************************
  Return the port number we've bound to on a socket.
 ****************************************************************************/
@@ -643,26 +625,30 @@ static int get_socket_port(int fd)
        }
        return -1;
 }
+#endif
 
-const char *client_name(void)
+const char *client_name(int fd)
 {
-       return get_peer_name(client_fd,false);
+       return get_peer_name(fd,false);
 }
 
-const char *client_addr(char *addr, size_t addrlen)
+const char *client_addr(int fd, char *addr, size_t addrlen)
 {
-       return get_peer_addr(client_fd,addr,addrlen);
+       return get_peer_addr(fd,addr,addrlen);
 }
 
-const char *client_socket_addr(char *addr, size_t addr_len)
+const char *client_socket_addr(int fd, char *addr, size_t addr_len)
 {
-       return get_socket_addr(client_fd, addr, addr_len);
+       return get_socket_addr(fd, addr, addr_len);
 }
 
-int client_socket_port(void)
+#if 0
+/* Not currently used. JRA. */
+int client_socket_port(int fd)
 {
-       return get_socket_port(client_fd);
+       return get_socket_port(fd);
 }
+#endif
 
 /****************************************************************************
  Accessor functions to make thread-safe code easier later...
@@ -904,6 +890,7 @@ ssize_t read_socket_with_timeout(int fd,
        ssize_t readret;
        size_t nread = 0;
        struct timeval timeout;
+       char addr[INET6_ADDRSTRLEN];
 
        /* just checking .... */
        if (maxcnt <= 0)
@@ -928,12 +915,12 @@ ssize_t read_socket_with_timeout(int fd,
                        }
 
                        if (readret == -1) {
-                               if (fd == client_fd) {
+                               if (fd == get_client_fd()) {
                                        /* Try and give an error message
                                         * saying what client failed. */
                                        DEBUG(0,("read_socket_with_timeout: "
                                                "client %s read error = %s.\n",
-                                               client_ip_string,
+                                               get_peer_addr(fd,addr,sizeof(addr)),
                                                strerror(errno) ));
                                } else {
                                        DEBUG(0,("read_socket_with_timeout: "
@@ -967,12 +954,13 @@ ssize_t read_socket_with_timeout(int fd,
                /* Check if error */
                if (selrtn == -1) {
                        /* something is wrong. Maybe the socket is dead? */
-                       if (fd == client_fd) {
+                       if (fd == get_client_fd()) {
                                /* Try and give an error message saying
                                 * what client failed. */
                                DEBUG(0,("read_socket_with_timeout: timeout "
                                "read for client %s. select error = %s.\n",
-                               client_ip_string, strerror(errno) ));
+                               get_peer_addr(fd,addr,sizeof(addr)),
+                               strerror(errno) ));
                        } else {
                                DEBUG(0,("read_socket_with_timeout: timeout "
                                "read. select error = %s.\n",
@@ -1002,12 +990,13 @@ ssize_t read_socket_with_timeout(int fd,
 
                if (readret == -1) {
                        /* the descriptor is probably dead */
-                       if (fd == client_fd) {
+                       if (fd == get_client_fd()) {
                                /* Try and give an error message
                                 * saying what client failed. */
                                DEBUG(0,("read_socket_with_timeout: timeout "
                                        "read to client %s. read error = %s.\n",
-                                       client_ip_string, strerror(errno) ));
+                                       get_peer_addr(fd,addr,sizeof(addr)),
+                                       strerror(errno) ));
                        } else {
                                DEBUG(0,("read_socket_with_timeout: timeout "
                                        "read. read error = %s.\n",
@@ -1032,6 +1021,7 @@ ssize_t read_data(int fd,char *buffer,size_t N)
 {
        ssize_t ret;
        size_t total=0;
+       char addr[INET6_ADDRSTRLEN];
 
        set_smb_read_error(SMB_READ_OK);
 
@@ -1047,13 +1037,13 @@ ssize_t read_data(int fd,char *buffer,size_t N)
                }
 
                if (ret == -1) {
-                       if (fd == client_fd) {
+                       if (fd == get_client_fd()) {
                                /* Try and give an error message saying
                                 * what client failed. */
                                DEBUG(0,("read_data: read failure for %d "
                                        "bytes to client %s. Error = %s\n",
                                        (int)(N - total),
-                                       client_ip_string,
+                                       get_peer_addr(fd,addr,sizeof(addr)),
                                        strerror(errno) ));
                        } else {
                                DEBUG(0,("read_data: read failure for %d. "
@@ -1077,17 +1067,19 @@ ssize_t write_data(int fd, const char *buffer, size_t N)
 {
        size_t total=0;
        ssize_t ret;
+       char addr[INET6_ADDRSTRLEN];
 
        while (total < N) {
                ret = sys_write(fd,buffer + total,N - total);
 
                if (ret == -1) {
-                       if (fd == client_fd) {
+                       if (fd == get_client_fd()) {
                                /* Try and give an error message saying
                                 * what client failed. */
                                DEBUG(0,("write_data: write failure in "
                                        "writing to client %s. Error %s\n",
-                                       client_ip_string, strerror(errno) ));
+                                       get_peer_addr(fd,addr,sizeof(addr)),
+                                       strerror(errno) ));
                        } else {
                                DEBUG(0,("write_data: write failure. "
                                        "Error = %s\n", strerror(errno) ));
index 4b670d5172cb7c3bc6ee16a2e6b83d2eee7cf395..2a16b5a7316bd9b50e43d64cce02fd49d39a7323 100644 (file)
@@ -71,7 +71,7 @@ static bool read_target_host(const char *mapfile, pstring targethost)
 
                *space = '\0';
 
-               if (strncmp(client_addr(addr,sizeof(addr)),
+               if (strncmp(client_addr(get_client_fd(),addr,sizeof(addr)),
                                buf, strlen(buf)) == 0) {
                        found = True;
                        break;
index 5709d936243afe2f53b680604acc7cee7a31ddb1..2ffd322b45ef4d5a8c0366f69ec45193407c14d2 100644 (file)
@@ -618,9 +618,9 @@ static int cups_job_submit(int snum, struct printjob *pjob)
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
                     NULL, pjob->user);
 
-       clientname = client_name();
+       clientname = client_name(get_client_fd());
        if (strcmp(clientname, "UNKNOWN") == 0) {
-               clientname = client_addr(addr,sizeof(addr));
+               clientname = client_addr(get_client_fd(),addr,sizeof(addr));
        }
 
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
index 6dd19577f14b91c9ed39cf88e9ad8deefce63709..b038f8d1fe85547917edb640689c02e4b4c2d059 100644 (file)
@@ -779,9 +779,9 @@ static int iprint_job_submit(int snum, struct printjob *pjob)
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
                     NULL, pjob->user);
 
-       clientname = client_name();
+       clientname = client_name(get_client_fd());
        if (strcmp(clientname, "UNKNOWN") == 0) {
-               clientname = client_addr(addr,sizeof(addr));
+               clientname = client_addr(get_client_fd(),addr,sizeof(addr));
        }
        
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
index f876ee976df634c11e9cb450ccf0ed63bd72c097..b6ae104d1c921063b77d5b5994eaf6ce4db34c23 100644 (file)
@@ -210,8 +210,8 @@ static NTSTATUS get_md4pw(char *md4pw, char *mach_acct, uint16 sec_chan_type)
      */
 
        if (!allow_access(lp_domain_hostsdeny(), lp_domain_hostsallow(),
-                         client_name(), client_addr(addr,sizeof(addr))))
-       {
+                       client_name(get_client_fd()),
+                       client_addr(get_client_fd(),addr,sizeof(addr)))) {
                DEBUG(0,("get_md4pw: Workstation %s denied access to domain\n", mach_acct));
                return False;
        }
index f0415138204f4c17ee13574b46b51fd8304d72a2..95e45a699003594ae642918b983c065c7ff7aff4 100644 (file)
@@ -152,7 +152,8 @@ bool claim_connection(connection_struct *conn, const char *name,
        crec.bcast_msg_flags = msg_flags;
        
        strlcpy(crec.machine,get_remote_machine_name(),sizeof(crec.machine));
-       strlcpy(crec.addr,conn?conn->client_address:client_addr(addr,sizeof(addr)),
+       strlcpy(crec.addr,conn?conn->client_address:
+                       client_addr(get_client_fd(),addr,sizeof(addr)),
                sizeof(crec.addr));
 
        dbuf.dptr = (uint8 *)&crec;
index 24feac463095268ce112a906948cd1eabe446480..aa39b012588128bfa6c0571d504a037b666d78f4 100644 (file)
@@ -1472,7 +1472,7 @@ static void process_smb(char *inbuf, size_t nread, size_t unread_bytes)
                        /* send a negative session response "not listening on calling name" */
                        static unsigned char buf[5] = {0x83, 0, 0, 1, 0x81};
                        DEBUG( 1, ( "Connection denied from %s\n",
-                               client_addr(addr,sizeof(addr)) ) );
+                               client_addr(get_client_fd(),addr,sizeof(addr)) ) );
                        (void)send_smb(smbd_server_fd(),(char *)buf);
                        exit_server_cleanly("connection denied");
                }
index e77573b9c6ba126ea4abb3fba90f58263c59d429..fbf886ee678cdcd4a2e1355afae6314f9ee9d607 100644 (file)
@@ -59,9 +59,12 @@ int smbd_server_fd(void)
 static void smbd_set_server_fd(int fd)
 {
        server_fd = fd;
-       client_setfd(fd);
 }
 
+int get_client_fd(void)
+{
+       return server_fd;
+}
 
 struct event_context *smbd_event_context(void)
 {
index 502fadedc75d7035322a1f37444e8ffa07e77e47..2402be3aeddbe5aa117b6f6db346de008b1a4dd6 100644 (file)
@@ -758,8 +758,9 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
 
        add_session_user(user);
 
-       safe_strcpy(conn->client_address, client_addr(addr,sizeof(addr)), 
-                   sizeof(conn->client_address)-1);
+       safe_strcpy(conn->client_address,
+                       client_addr(get_client_fd(),addr,sizeof(addr)), 
+                       sizeof(conn->client_address)-1);
        conn->num_files_open = 0;
        conn->lastused = conn->lastused_count = time(NULL);
        conn->used = True;
@@ -1303,7 +1304,7 @@ connection_struct *make_connection(const char *service_in, DATA_BLOB password,
 
                DEBUG(0,("%s (%s) couldn't find service %s\n",
                        get_remote_machine_name(),
-                       client_addr(addr,sizeof(addr)),
+                       client_addr(get_client_fd(),addr,sizeof(addr)),
                        service));
                *status = NT_STATUS_BAD_NETWORK_NAME;
                return NULL;
index 69f4a37c850f8c45effa8d887bd29fb112415a6e..000b2f5d9c9fc28bdf61e76b8bee28469b1b3978 100644 (file)
@@ -159,9 +159,9 @@ bool session_claim(user_struct *vuser)
           client_name() handles this case internally.
        */
 
-       hostname = client_name();
+       hostname = client_name(get_client_fd());
        if (strcmp(hostname, "UNKNOWN") == 0) {
-               hostname = client_addr(addr,sizeof(addr));
+               hostname = client_addr(get_client_fd(),addr,sizeof(addr));
        }
 
        fstrcpy(sessionid.username, vuser->user.unix_name);
@@ -171,7 +171,8 @@ bool session_claim(user_struct *vuser)
        sessionid.uid = vuser->uid;
        sessionid.gid = vuser->gid;
        fstrcpy(sessionid.remote_machine, get_remote_machine_name());
-       fstrcpy(sessionid.ip_addr_str, client_addr(addr,sizeof(addr)));
+       fstrcpy(sessionid.ip_addr_str,
+               client_addr(get_client_fd(),addr,sizeof(addr)));
        sessionid.connect_start = time(NULL);
 
        if (!smb_pam_claim_session(sessionid.username, sessionid.id_str,
index 87cb3b435b33f7fe8c53c5afe48d39b8498efec8..0e8483c81ef07ea929cf4963760c9e614e83bdf7 100644 (file)
@@ -1317,8 +1317,8 @@ static void setup_new_vc_session(void)
 #endif
        if (lp_reset_on_zero_vc()) {
                connections_forall(shutdown_other_smbds,
-                               CONST_DISCARD(void *,
-                                       client_addr(addr,sizeof(addr))));
+                       CONST_DISCARD(void *,
+                       client_addr(get_client_fd(),addr,sizeof(addr))));
        }
 }
 
index bdbb9511c7c9ed095e9354542482c3d1a59ebbeb..0633d0c2e7c8e2efa3e9290905b26d1ffd98cdbb 100644 (file)
@@ -34,6 +34,11 @@ static struct cmd_list {
 
 extern pstring user_socket_options;
 
+int get_client_fd(void)
+{
+       return -1;
+}
+
 /****************************************************************************
 handle completion of commands for readline
 ****************************************************************************/