The branch, v3-3-test has been updated
       via  4fce98c... Fix bug 6828 - infinite timeout occurs when byte lock 
held outside of samba Jeremy.
      from  74b8619... s3: Don't fail authentication when one or some group of 
require-membership-of is invalid.

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


- Log -----------------------------------------------------------------
commit 4fce98ce2578f4bc5063a766fdacbdd5f840e446
Author: Jeremy Allison <[email protected]>
Date:   Tue Oct 20 18:17:19 2009 -0700

    Fix bug 6828 - infinite timeout occurs when byte lock held outside of samba 
Jeremy.

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

Summary of changes:
 source/smbd/blocking.c |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/smbd/blocking.c b/source/smbd/blocking.c
index 2c37fea..f4adc0d 100644
--- a/source/smbd/blocking.c
+++ b/source/smbd/blocking.c
@@ -94,6 +94,22 @@ static void brl_timeout_fn(struct event_context *event_ctx,
 }
 
 /****************************************************************************
+ We need a version of timeval_min that treats zero timval as infinite.
+****************************************************************************/
+
+static struct timeval timeval_brl_min(const struct timeval *tv1,
+                                       const struct timeval *tv2)
+{
+       if (timeval_is_zero(tv1)) {
+               return *tv2;
+       }
+       if (timeval_is_zero(tv2)) {
+               return *tv1;
+       }
+       return timeval_min(tv1, tv2);
+}
+
+/****************************************************************************
  After a change to blocking_lock_queue, recalculate the timed_event for the
  next processing.
 ****************************************************************************/
@@ -116,19 +132,13 @@ static bool recalc_brl_timeout(void)
                         */
                         if (brl->blocking_pid == 0xFFFFFFFF) {
                                struct timeval psx_to = timeval_current_ofs(10, 
0);
-                               next_timeout = timeval_min(&next_timeout, 
&psx_to);
+                               next_timeout = timeval_brl_min(&next_timeout, 
&psx_to);
                         }
 
                        continue;
                }
 
-               if (timeval_is_zero(&next_timeout)) {
-                       next_timeout = brl->expire_time;
-               }
-               else {
-                       next_timeout = timeval_min(&next_timeout,
-                                                  &brl->expire_time);
-               }
+               next_timeout = timeval_brl_min(&next_timeout, 
&brl->expire_time);
        }
 
        if (timeval_is_zero(&next_timeout)) {


-- 
Samba Shared Repository

Reply via email to