http://gimel.esc.cam.ac.uk/james/rpld/src/rpld-1.7.tar.gz
[rpld.git] / client.c
index 57e093f..9b56b4c 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.29 2000/09/26 04:06:07 root Exp root $";
 
 /*
  * $Log: client.c,v $
- * Revision 1.11  1999/09/26 10:46:56  root
+ * Revision 1.29  2000/09/26 04:06:07  root
+ * #
+ *
+ * Revision 1.28  2000/09/26 03:48:23  root
+ * #
+ *
+ * Revision 1.27  2000/09/26 02:32:46  root
+ * #
+ *
+ * Revision 1.26  2000/09/26 02:31:38  root
+ * #
+ *
+ * Revision 1.25  2000/09/26 01:41:22  root
+ * #
+ *
+ * Revision 1.24  2000/09/26 01:41:20  root
+ * #
+ *
+ * Revision 1.23  2000/09/26 01:39:17  root
+ * #
+ *
+ * Revision 1.22  2000/09/26 01:03:19  root
+ * #
+ *
+ * Revision 1.21  2000/07/29 23:25:58  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 +255,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,25 +380,30 @@ 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;
     }
 
 }
 
-client_dispatch (struct nit *n)
+client_dispatch (struct llcdrv *lld)
 {
   struct client *c = clients;
 
   while (c)
     {
-      if (c->state == ST_FILEDATA)
+      if ((c->state == ST_FILEDATA) && (!c->nospew))
         {
-          file_data_frame (n, c);
+          file_data_frame (lld, c);
         }
       c = c->next;