The branch, master has been updated
       via  0c7f36d s3:smbd: avoid calling fd_is_readable() without async echo 
handler
       via  fd72249 s3:lib: avoid talloc_zero_array() in poll_one_fd()
       via  952392a s3:smbd: use PATH_MAX for the buffer passed to 
full_path_tos()
      from  f3556bd tdb: Avoid reallocs for lockrecs

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


- Log -----------------------------------------------------------------
commit 0c7f36d299caa80785514939fd45be8377d8faf4
Author: Stefan Metzmacher <[email protected]>
Date:   Wed Dec 11 15:02:27 2013 +0100

    s3:smbd: avoid calling fd_is_readable() without async echo handler
    
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>
    
    Autobuild-User(master): Volker Lendecke <[email protected]>
    Autobuild-Date(master): Sat Dec 14 20:19:10 CET 2013 on sn-devel-104

commit fd722494e7b5add462af5163315d85344a775f1f
Author: Stefan Metzmacher <[email protected]>
Date:   Wed Dec 4 23:31:10 2013 +0100

    s3:lib: avoid talloc_zero_array() in poll_one_fd()
    
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>

commit 952392af38b5558f5dfb858251fce4d22c9a1ec2
Author: Stefan Metzmacher <[email protected]>
Date:   Sat Dec 14 10:45:42 2013 +0100

    s3:smbd: use PATH_MAX for the buffer passed to full_path_tos()
    
    We use this in other places too and it's better than a hardcoded value.
    
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>

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

Summary of changes:
 source3/lib/util_sock.c |   19 +++++--------------
 source3/smbd/files.c    |    2 +-
 source3/smbd/notify.c   |    2 +-
 source3/smbd/process.c  |   24 +++++++++++++-----------
 4 files changed, 20 insertions(+), 27 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/util_sock.c b/source3/lib/util_sock.c
index a35ae97..12e4ccd 100644
--- a/source3/lib/util_sock.c
+++ b/source3/lib/util_sock.c
@@ -1490,27 +1490,18 @@ int getaddrinfo_recv(struct tevent_req *req, struct 
addrinfo **res)
 
 int poll_one_fd(int fd, int events, int timeout, int *revents)
 {
-       struct pollfd *fds;
+       struct pollfd pfd;
        int ret;
-       int saved_errno;
 
-       fds = talloc_zero_array(talloc_tos(), struct pollfd, 1);
-       if (fds == NULL) {
-               errno = ENOMEM;
-               return -1;
-       }
-       fds[0].fd = fd;
-       fds[0].events = events;
+       pfd.fd = fd;
+       pfd.events = events;
 
-       ret = poll(fds, 1, timeout);
+       ret = poll(&pfd, 1, timeout);
 
        /*
         * Assign whatever poll did, even in the ret<=0 case.
         */
-       *revents = fds[0].revents;
-       saved_errno = errno;
-       TALLOC_FREE(fds);
-       errno = saved_errno;
+       *revents = pfd.revents;
 
        return ret;
 }
diff --git a/source3/smbd/files.c b/source3/smbd/files.c
index ba24eda..5cf037e 100644
--- a/source3/smbd/files.c
+++ b/source3/smbd/files.c
@@ -734,7 +734,7 @@ ssize_t full_path_tos(const char *dir, const char *name,
 NTSTATUS file_name_hash(connection_struct *conn,
                        const char *name, uint32_t *p_name_hash)
 {
-       char tmpbuf[1024];
+       char tmpbuf[PATH_MAX];
        char *fullpath, *to_free;
        size_t len;
 
diff --git a/source3/smbd/notify.c b/source3/smbd/notify.c
index 078bc99..c19982a 100644
--- a/source3/smbd/notify.c
+++ b/source3/smbd/notify.c
@@ -419,7 +419,7 @@ void notify_fname(connection_struct *conn, uint32 action, 
uint32 filter,
 {
        struct notify_context *notify_ctx = conn->sconn->notify_ctx;
        char *fullpath, *to_free;
-       char tmpbuf[1024];
+       char tmpbuf[PATH_MAX];
        ssize_t len;
 
        if (path[0] == '.' && path[1] == '/') {
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 7d9f767..8bd1c2e 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -2383,21 +2383,23 @@ static void smbd_server_connection_read_handler(
        NTSTATUS status;
        uint32_t seqnum;
 
-       bool from_client;
+       bool async_echo = lp_async_smb_echo_handler();
+       bool from_client = false;
 
-       if (lp_async_smb_echo_handler()
-           && fd_is_readable(sconn->smb1.echo_handler.trusted_fd)) {
-               /*
-                * This is the super-ugly hack to prefer the packets
-                * forwarded by the echo handler over the ones by the
-                * client directly
-                */
-               fd = sconn->smb1.echo_handler.trusted_fd;
+       if (async_echo) {
+               if (fd_is_readable(sconn->smb1.echo_handler.trusted_fd)) {
+                       /*
+                        * This is the super-ugly hack to prefer the packets
+                        * forwarded by the echo handler over the ones by the
+                        * client directly
+                        */
+                       fd = sconn->smb1.echo_handler.trusted_fd;
+               }
        }
 
        from_client = (sconn->sock == fd);
 
-       if (from_client) {
+       if (async_echo && from_client) {
                smbd_lock_socket(sconn);
 
                if (!fd_is_readable(fd)) {
@@ -2416,7 +2418,7 @@ static void smbd_server_connection_read_handler(
                                    &inbuf_len, &seqnum,
                                    !from_client /* trusted channel */);
 
-       if (from_client) {
+       if (async_echo && from_client) {
                smbd_unlock_socket(sconn);
        }
 


-- 
Samba Shared Repository

Reply via email to