The branch, master has been updated
       via  c2533f9 s3: Remove smbd_server_conn from construct_reply
       via  63e08ef s3: Lift smbd_server_conn from receive_smb_talloc
       via  a2db154 s3: Lift smbd_server_conn from receive_smb_raw_talloc
       via  fa0de39 s3: Lift smbd_server_conn from 
receive_smb_raw_talloc_partial_read
       via  cac60a7 s3: Remove some explicit smbd_server_conn refs in 
process_smb()
       via  81bdb59 s3: Rename "conn" to the more used "sconn" in process_smb()
      from  9a3810f s4:samldb LDB module - attempt to fix integer handling on 
big-endian platforms

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit c2533f94b561e9b22d621b7515c6606d39ffec89
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 18:16:21 2010 +0200

    s3: Remove smbd_server_conn from construct_reply
    
    Autobuild-User: Volker Lendecke <[email protected]>
    Autobuild-Date: Thu Oct 14 12:35:07 UTC 2010 on sn-devel-104

commit 63e08ef8854bd9bde940fee774e94a6749825008
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 18:13:39 2010 +0200

    s3: Lift smbd_server_conn from receive_smb_talloc

commit a2db154caa104c9606e343391ff9ffe33f1610a7
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 18:11:37 2010 +0200

    s3: Lift smbd_server_conn from receive_smb_raw_talloc

commit fa0de39551323bbc57998956de1be382e1f20134
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 18:08:51 2010 +0200

    s3: Lift smbd_server_conn from receive_smb_raw_talloc_partial_read

commit cac60a7041f0c37246f26f71c3c868e2adf5dc20
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 18:05:17 2010 +0200

    s3: Remove some explicit smbd_server_conn refs in process_smb()

commit 81bdb5910c8f84bd9e83c76a78370884e8f638f8
Author: Volker Lendecke <[email protected]>
Date:   Sun Oct 3 18:04:05 2010 +0200

    s3: Rename "conn" to the more used "sconn" in process_smb()

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/process.c |   77 +++++++++++++++++++++++++-----------------------
 1 files changed, 40 insertions(+), 37 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 763ee56..ff2b8fc 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -244,7 +244,8 @@ static NTSTATUS read_packet_remainder(int fd, char *buffer,
 
 static NTSTATUS receive_smb_raw_talloc_partial_read(TALLOC_CTX *mem_ctx,
                                                    const char lenbuf[4],
-                                                   int fd, char **buffer,
+                                                   struct 
smbd_server_connection *sconn,
+                                                   char **buffer,
                                                    unsigned int timeout,
                                                    size_t *p_unread,
                                                    size_t *len_ret)
@@ -258,16 +259,14 @@ static NTSTATUS 
receive_smb_raw_talloc_partial_read(TALLOC_CTX *mem_ctx,
        memcpy(writeX_header, lenbuf, 4);
 
        status = read_fd_with_timeout(
-               fd, writeX_header + 4,
+               sconn->sock, writeX_header + 4,
                STANDARD_WRITE_AND_X_HEADER_SIZE,
                STANDARD_WRITE_AND_X_HEADER_SIZE,
                timeout, NULL);
 
        if (!NT_STATUS_IS_OK(status)) {
-               char addr[INET6_ADDRSTRLEN];
                DEBUG(0, ("read_fd_with_timeout failed for client %s read "
-                         "error = %s.\n",
-                         get_peer_addr(fd, addr, sizeof(addr)),
+                         "error = %s.\n", sconn->client_id.addr,
                          nt_errstr(status)));
                return status;
        }
@@ -277,8 +276,7 @@ static NTSTATUS 
receive_smb_raw_talloc_partial_read(TALLOC_CTX *mem_ctx,
         * valid writeX call.
         */
 
-       if (is_valid_writeX_buffer(smbd_server_conn,
-                                  (uint8_t *)writeX_header)) {
+       if (is_valid_writeX_buffer(sconn, (uint8_t *)writeX_header)) {
                /*
                 * If the data offset is beyond what
                 * we've read, drain the extra bytes.
@@ -288,7 +286,7 @@ static NTSTATUS 
receive_smb_raw_talloc_partial_read(TALLOC_CTX *mem_ctx,
 
                if (doff > STANDARD_WRITE_AND_X_HEADER_SIZE) {
                        size_t drain = doff - STANDARD_WRITE_AND_X_HEADER_SIZE;
-                       if (drain_socket(fd, drain) != drain) {
+                       if (drain_socket(sconn->sock, drain) != drain) {
                                smb_panic("receive_smb_raw_talloc_partial_read:"
                                        " failed to drain pending bytes");
                        }
@@ -343,7 +341,8 @@ static NTSTATUS 
receive_smb_raw_talloc_partial_read(TALLOC_CTX *mem_ctx,
 
        if(toread > 0) {
                status = read_packet_remainder(
-                       fd, (*buffer) + 4 + STANDARD_WRITE_AND_X_HEADER_SIZE,
+                       sconn->sock,
+                       (*buffer) + 4 + STANDARD_WRITE_AND_X_HEADER_SIZE,
                        timeout, toread);
 
                if (!NT_STATUS_IS_OK(status)) {
@@ -357,7 +356,8 @@ static NTSTATUS 
receive_smb_raw_talloc_partial_read(TALLOC_CTX *mem_ctx,
        return NT_STATUS_OK;
 }
 
-static NTSTATUS receive_smb_raw_talloc(TALLOC_CTX *mem_ctx, int fd,
+static NTSTATUS receive_smb_raw_talloc(TALLOC_CTX *mem_ctx,
+                                      struct smbd_server_connection *sconn,
                                       char **buffer, unsigned int timeout,
                                       size_t *p_unread, size_t *plen)
 {
@@ -368,7 +368,8 @@ static NTSTATUS receive_smb_raw_talloc(TALLOC_CTX *mem_ctx, 
int fd,
 
        *p_unread = 0;
 
-       status = read_smb_length_return_keepalive(fd, lenbuf, timeout, &len);
+       status = read_smb_length_return_keepalive(sconn->sock, lenbuf, timeout,
+                                                 &len);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -376,11 +377,12 @@ static NTSTATUS receive_smb_raw_talloc(TALLOC_CTX 
*mem_ctx, int fd,
        if (CVAL(lenbuf,0) == 0 && min_recv_size &&
            (smb_len_large(lenbuf) > /* Could be a UNIX large writeX. */
                (min_recv_size + STANDARD_WRITE_AND_X_HEADER_SIZE)) &&
-           !srv_is_signing_active(smbd_server_conn) &&
-           smbd_server_conn->smb1.echo_handler.trusted_fde == NULL) {
+           !srv_is_signing_active(sconn) &&
+           sconn->smb1.echo_handler.trusted_fde == NULL) {
 
                return receive_smb_raw_talloc_partial_read(
-                       mem_ctx, lenbuf, fd, buffer, timeout, p_unread, plen);
+                       mem_ctx, lenbuf, sconn, buffer, timeout,
+                       p_unread, plen);
        }
 
        if (!valid_packet_size(len)) {
@@ -401,7 +403,7 @@ static NTSTATUS receive_smb_raw_talloc(TALLOC_CTX *mem_ctx, 
int fd,
 
        memcpy(*buffer, lenbuf, sizeof(lenbuf));
 
-       status = read_packet_remainder(fd, (*buffer)+4, timeout, len);
+       status = read_packet_remainder(sconn->sock, (*buffer)+4, timeout, len);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }
@@ -410,7 +412,8 @@ static NTSTATUS receive_smb_raw_talloc(TALLOC_CTX *mem_ctx, 
int fd,
        return NT_STATUS_OK;
 }
 
-static NTSTATUS receive_smb_talloc(TALLOC_CTX *mem_ctx,        int fd,
+static NTSTATUS receive_smb_talloc(TALLOC_CTX *mem_ctx,
+                                  struct smbd_server_connection *sconn,
                                   char **buffer, unsigned int timeout,
                                   size_t *p_unread, bool *p_encrypted,
                                   size_t *p_len,
@@ -422,14 +425,12 @@ static NTSTATUS receive_smb_talloc(TALLOC_CTX *mem_ctx,   
int fd,
 
        *p_encrypted = false;
 
-       status = receive_smb_raw_talloc(mem_ctx, fd, buffer, timeout,
+       status = receive_smb_raw_talloc(mem_ctx, sconn, buffer, timeout,
                                        p_unread, &len);
        if (!NT_STATUS_IS_OK(status)) {
-               char addr[INET6_ADDRSTRLEN];
                DEBUG(1, ("read_smb_length_return_keepalive failed for "
                          "client %s read error = %s.\n",
-                         get_peer_addr(fd, addr, sizeof(addr)),
-                         nt_errstr(status)));
+                         sconn->client_id.addr, nt_errstr(status)));
                return status;
        }
 
@@ -445,7 +446,7 @@ static NTSTATUS receive_smb_talloc(TALLOC_CTX *mem_ctx,     
int fd,
        }
 
        /* Check the incoming SMB signature. */
-       if (!srv_check_sign_mac(smbd_server_conn, *buffer, seqnum, 
trusted_channel)) {
+       if (!srv_check_sign_mac(sconn, *buffer, seqnum, trusted_channel)) {
                DEBUG(0, ("receive_smb: SMB Signature verification failed on "
                          "incoming packet!\n"));
                return NT_STATUS_INVALID_NETWORK_RESPONSE;
@@ -1569,7 +1570,8 @@ static connection_struct *switch_message(uint8 type, 
struct smb_request *req, in
  Construct a reply to the incoming packet.
 ****************************************************************************/
 
-static void construct_reply(char *inbuf, int size, size_t unread_bytes,
+static void construct_reply(struct smbd_server_connection *sconn,
+                           char *inbuf, int size, size_t unread_bytes,
                            uint32_t seqnum, bool encrypted,
                            struct smb_perfcount_data *deferred_pcd)
 {
@@ -1580,8 +1582,8 @@ static void construct_reply(char *inbuf, int size, size_t 
unread_bytes,
                smb_panic("could not allocate smb_request");
        }
 
-       if (!init_smb_request(req, smbd_server_conn, (uint8 *)inbuf,
-                             unread_bytes, encrypted, seqnum)) {
+       if (!init_smb_request(req, sconn, (uint8 *)inbuf, unread_bytes,
+                             encrypted, seqnum)) {
                exit_server_cleanly("Invalid SMB request");
        }
 
@@ -1636,7 +1638,7 @@ static void construct_reply(char *inbuf, int size, size_t 
unread_bytes,
 /****************************************************************************
  Process an smb from the client
 ****************************************************************************/
-static void process_smb(struct smbd_server_connection *conn,
+static void process_smb(struct smbd_server_connection *sconn,
                        uint8_t *inbuf, size_t nread, size_t unread_bytes,
                        uint32_t seqnum, bool encrypted,
                        struct smb_perfcount_data *deferred_pcd)
@@ -1648,37 +1650,38 @@ static void process_smb(struct smbd_server_connection 
*conn,
        DEBUG( 6, ( "got message type 0x%x of len 0x%x\n", msg_type,
                    smb_len(inbuf) ) );
        DEBUG(3, ("Transaction %d of length %d (%u toread)\n",
-                 conn->trans_num, (int)nread, (unsigned int)unread_bytes));
+                 sconn->trans_num, (int)nread, (unsigned int)unread_bytes));
 
        if (msg_type != 0) {
                /*
                 * NetBIOS session request, keepalive, etc.
                 */
-               reply_special(conn, (char *)inbuf, nread);
+               reply_special(sconn, (char *)inbuf, nread);
                goto done;
        }
 
-       if (smbd_server_conn->using_smb2) {
+       if (sconn->using_smb2) {
                /* At this point we're not really using smb2,
                 * we make the decision here.. */
                if (smbd_is_smb2_header(inbuf, nread)) {
-                       smbd_smb2_first_negprot(smbd_server_conn, inbuf, nread);
+                       smbd_smb2_first_negprot(sconn, inbuf, nread);
                        return;
                } else if (nread >= smb_size && valid_smb_header(inbuf)
                                && CVAL(inbuf, smb_com) != 0x72) {
                        /* This is a non-negprot SMB1 packet.
                           Disable SMB2 from now on. */
-                       smbd_server_conn->using_smb2 = false;
+                       sconn->using_smb2 = false;
                }
        }
 
        show_msg((char *)inbuf);
 
-       construct_reply((char 
*)inbuf,nread,unread_bytes,seqnum,encrypted,deferred_pcd);
-       conn->trans_num++;
+       construct_reply(sconn, (char *)inbuf, nread, unread_bytes, seqnum,
+                       encrypted, deferred_pcd);
+       sconn->trans_num++;
 
 done:
-       conn->smb1.num_requests++;
+       sconn->smb1.num_requests++;
 
        /* The timeout_processing function isn't run nearly
           often enough to implement 'max log size' without
@@ -1687,7 +1690,7 @@ done:
           level 10.  Checking every 50 SMBs is a nice
           tradeoff of performance vs log file size overrun. */
 
-       if ((conn->smb1.num_requests % 50) == 0 &&
+       if ((sconn->smb1.num_requests % 50) == 0 &&
            need_to_check_log_size()) {
                change_to_root_user();
                check_log_size();
@@ -2301,7 +2304,7 @@ static void smbd_server_connection_read_handler(
                }
 
                /* TODO: make this completely nonblocking */
-               status = receive_smb_talloc(mem_ctx, fd,
+               status = receive_smb_talloc(mem_ctx, conn,
                                            (char **)(void *)&inbuf,
                                            0, /* timeout */
                                            &unread_bytes,
@@ -2311,7 +2314,7 @@ static void smbd_server_connection_read_handler(
                smbd_unlock_socket(conn);
        } else {
                /* TODO: make this completely nonblocking */
-               status = receive_smb_talloc(mem_ctx, fd,
+               status = receive_smb_talloc(mem_ctx, conn,
                                            (char **)(void *)&inbuf,
                                            0, /* timeout */
                                            &unread_bytes,
@@ -2733,7 +2736,7 @@ static void smbd_echo_reader(struct tevent_context *ev,
 
        DEBUG(10,("echo_handler[%d]: reading pdu\n", (int)sys_getpid()));
 
-       status = receive_smb_talloc(state->pending, sconn->sock,
+       status = receive_smb_talloc(state->pending, sconn,
                                    (char **)(void 
*)&state->pending[num_pending].iov_base,
                                    0 /* timeout */,
                                    &unread,


-- 
Samba Shared Repository

Reply via email to