client_p->localClient->sent_parsed = 0;
}
-/*
- * flood_recalc
- *
- * recalculate the number of allowed flood lines. this should be called
- * once a second on any given client. We then attempt to flush some data.
- */
-void
-flood_recalc(int fd, void *data)
-{
- struct Client *client_p = data;
- struct LocalUser *lclient_p = client_p->localClient;
-
- /* This can happen in the event that the client detached. */
- if(!lclient_p)
- return;
-
- /* allow a bursting client their allocation per second, allow
- * a client whos flooding an extra 2 per second
- */
- if(IsFloodDone(client_p))
- lclient_p->sent_parsed -= 2;
- else
- lclient_p->sent_parsed = 0;
-
- if(lclient_p->sent_parsed < 0)
- lclient_p->sent_parsed = 0;
-
- if(--lclient_p->actually_read < 0)
- lclient_p->actually_read = 0;
-
- parse_client_queued(client_p);
-
- if(IsAnyDead(client_p))
- return;
-
- /* and finally, reset the flood check */
- rb_setflush(fd, 1000, flood_recalc, client_p);
+/*\r
+ * flood_recalc\r
+ *\r
+ * recalculate the number of allowed flood lines. this should be called\r
+ * once a second on any given client. We then attempt to flush some data.\r
+ */\r
+void\r
+flood_recalc(void *unused)\r
+{\r
+ rb_dlink_node *ptr, *next;\r
+ struct Client *client_p;\r
+\r
+ RB_DLINK_FOREACH_SAFE(ptr, next, lclient_list.head)\r
+ {\r
+ client_p = ptr->data;\r
+\r
+ if(unlikely(IsMe(client_p)))\r
+ continue;\r
+ \r
+ if(unlikely(client_p->localClient == NULL))\r
+ continue;\r
+ \r
+ if(IsFloodDone(client_p))\r
+ client_p->localClient->sent_parsed -= 2;\r
+ else\r
+ client_p->localClient->sent_parsed = 0;\r
+ \r
+ if(client_p->localClient->sent_parsed < 0)\r
+ client_p->localClient->sent_parsed = 0;\r
+\r
+ if(--client_p->localClient->actually_read < 0)\r
+ client_p->localClient->actually_read = 0;\r
+\r
+ parse_client_queued(client_p);\r
+ \r
+ if(unlikely(IsAnyDead(client_p)))\r
+ continue;\r
+\r
+ }\r
+\r
+ RB_DLINK_FOREACH_SAFE(ptr, next, unknown_list.head)\r
+ {\r
+ client_p = ptr->data;\r
+\r
+ if(client_p->localClient == NULL)\r
+ continue;\r
+\r
+ client_p->localClient->sent_parsed--;\r
+\r
+ if(client_p->localClient->sent_parsed < 0)\r
+ client_p->localClient->sent_parsed = 0;\r
+\r
+ if(--client_p->localClient->actually_read < 0)\r
+ client_p->localClient->actually_read = 0;\r
+\r
+ parse_client_queued(client_p);\r
+ }\r
}
/*