The branch, v3-5-test has been updated
       via  44a2e73 s3:lib/events: use DLIST_DEMOTE() for fd events
       via  8a82e65 s3:smbd: let smbd_server_connection_loop_once() check for 
select errors
       via  6647d68 s3:lib/events: don't loop over fd events is select gave -1
      from  a50a0f4 s3: Fix bug 7940 -- fall back for utimes calls

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test


- Log -----------------------------------------------------------------
commit 44a2e73cf07110e463f2262c50a377bdf17253d6
Author: Stefan Metzmacher <[email protected]>
Date:   Mon Jan 24 08:47:12 2011 +0100

    s3:lib/events: use DLIST_DEMOTE() for fd events
    
    This makes sure that fd events doesn't dry out,
    because a fd with a lower number is busy.
    
    metze
    
    The last 3 patches address bug #7942 (inotify can somehow cause endless 
loops in
    with select()).
    
    Autobuild-User: Stefan Metzmacher <[email protected]>
    Autobuild-Date: Mon Jan 31 16:59:44 CET 2011 on sn-devel-104
    (cherry picked from commit ad10289ebcc78ab62ec86abb29f81eb769d17f4e)
    (cherry picked from commit 3d2f72844a221dbdfe94fbf6e2b45c98ee158a9b)

commit 8a82e65f711e2f4ac893bd7e2365b305e1b088b8
Author: Stefan Metzmacher <[email protected]>
Date:   Mon Jan 24 09:00:53 2011 +0100

    s3:smbd: let smbd_server_connection_loop_once() check for select errors
    
    metze
    (cherry picked from commit 0bbe7334d69bcaa476f0741e0bd9685b023a4208)
    (cherry picked from commit d677921237c66e6cdf83de04e16c576a101d6493)

commit 6647d687654aff806dfa8d797634b47ede36bf9c
Author: Stefan Metzmacher <[email protected]>
Date:   Mon Jan 24 08:57:47 2011 +0100

    s3:lib/events: don't loop over fd events is select gave -1
    
    metze
    (cherry picked from commit 1f2be10ebf4cc06e3b7aac41ea35bfc4a41ce828)
    (cherry picked from commit d506b574bb94fdc23c5a62c5326cd478b5b63a11)

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

Summary of changes:
 source3/lib/events.c   |    3 ++-
 source3/smbd/process.c |    4 ++++
 2 files changed, 6 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/events.c b/source3/lib/events.c
index 75aa250..c529038 100644
--- a/source3/lib/events.c
+++ b/source3/lib/events.c
@@ -131,7 +131,7 @@ bool run_events(struct tevent_context *ev,
                return true;
        }
 
-       if (selrtn == 0) {
+       if (selrtn <= 0) {
                /*
                 * No fd ready
                 */
@@ -145,6 +145,7 @@ bool run_events(struct tevent_context *ev,
                if (FD_ISSET(fde->fd, write_fds)) flags |= EVENT_FD_WRITE;
 
                if (flags & fde->flags) {
+                       DLIST_DEMOTE(ev->fd_events, fde, struct tevent_fd *);
                        fde->handler(ev, fde, flags, fde->private_data);
                        return true;
                }
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index f7b0f4c..5292060 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -837,6 +837,10 @@ static NTSTATUS smbd_server_connection_loop_once(struct 
smbd_server_connection *
                errno = sav;
        }
 
+       if (selrtn == -1 && errno != EINTR) {
+               return map_nt_error_from_unix(errno);
+       }
+
        if (run_events(smbd_event_context(), selrtn, &r_fds, &w_fds)) {
                return NT_STATUS_RETRY;
        }


-- 
Samba Shared Repository

Reply via email to