Author: adrian
Date: Tue Oct  4 14:26:45 2011
New Revision: 225980
URL: http://svn.freebsd.org/changeset/base/225980

Log:
  Handle the situation where fixups_close() has been called but more fixups
  are still available on the queue.
  
  Without this, the fixups producer/consumer pipeline will artifically terminate
  before all of the fixups have been processed, leading to incomplete updates
  and generally quite unhappy users.
  
  Submitted by: mux

Modified:
  head/usr.bin/csup/fixups.c

Modified: head/usr.bin/csup/fixups.c
==============================================================================
--- head/usr.bin/csup/fixups.c  Tue Oct  4 14:25:10 2011        (r225979)
+++ head/usr.bin/csup/fixups.c  Tue Oct  4 14:26:45 2011        (r225980)
@@ -141,7 +141,7 @@ fixups_get(struct fixups *f)
        fixups_lock(f);
        while (f->size == 0 && !f->closed)
                pthread_cond_wait(&f->cond, &f->lock);
-       if (f->closed) {
+       if (f->closed && f->size == 0) {
                fixups_unlock(f);
                return (NULL);
        }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to