http://gimel.esc.cam.ac.uk/james/rpld/src/rpld-1.5.tar.gz
[rpld.git] / client.c
index 57e093f..ebf7ef8 100644 (file)
--- a/client.c
+++ b/client.c
@@ -2,9 +2,9 @@
 *     rpld - an IBM style RIPL server            *
 *************************************************/
 
-/* Copyright (c) 1999, James McKenzie.
+/* Copyright (c) 1999,2000, James McKenzie.
  *                      All rights reserved
- * Copyright (c) 1998, Christopher Lightfoot.
+ * Copyright (c) 1998,2000, Christopher Lightfoot.
  *                      All rights reserved
  *
  * By using this file, you agree to the terms and conditions set
  */
 
 
-static char rcsid[] = "$Id: client.c,v 1.11 1999/09/26 10:46:56 root Exp root $";
+static char rcsid[] =
+  "$Id: client.c,v 1.20 2000/07/29 23:25:25 root Exp root $";
 
 /*
  * $Log: client.c,v $
- * Revision 1.11  1999/09/26 10:46:56  root
+ * Revision 1.20  2000/07/29 23:25:25  root
+ * #
+ *
+ * Revision 1.19  2000/07/23 19:14:19  root
+ * #
+ *
+ * Revision 1.18  2000/07/23 19:07:49  root
+ * #
+ *
+ * Revision 1.17  2000/07/17 10:49:20  root
+ * #
+ *
+ * Revision 1.16  2000/07/17 10:45:38  root
+ * #
+ *
+ * Revision 1.15  2000/07/17 10:43:54  root
+ * #
+ *
+ * Revision 1.14  2000/07/17 10:43:34  root
+ * #
+ *
+ * Revision 1.13  2000/07/16 14:22:06  root
+ * #
+ *
+ * Revision 1.12  2000/07/16 14:05:28  root
+ * #
+ *
+ * Revision 1.11  2000/07/16 13:18:10  root
+ * #
+ *
+ * Revision 1.1  2000/07/16 13:16:33  root
  * #
  *
  * Revision 1.10  1999/09/14 17:12:38  root
@@ -197,6 +228,10 @@ client_get_block (struct client *c, struct rpl_packet *p)
 
   f = c->file;
 
+  p->datalen = 0;               /* Some buggy clients request
+                                   * blocks after the end when
+                                   * they get confused */
+
   if ((!f) || (NOTINRANGE (f->sblock, c->blocknum, f->eblock)))
     {
       if ((f) && (f->f))
@@ -318,11 +353,16 @@ clients_check_status ()
   struct client *c = clients;
 
   downloading = 0;
+  pacing = 0;
 
   while (c)
     {
-      if (c->state == ST_FILEDATA)
-        downloading++;
+      if ((c->state == ST_FILEDATA) && (!c->nospew))
+        {
+          downloading++;
+          if (pacing < c->pacing)
+            pacing = c->pacing;
+        }
       c = c->next;
     }
 
@@ -334,7 +374,7 @@ client_dispatch (struct nit *n)
 
   while (c)
     {
-      if (c->state == ST_FILEDATA)
+      if ((c->state == ST_FILEDATA) && (!c->nospew))
         {
           file_data_frame (n, c);
         }