Commit Diff


commit - fdfc27265ef27e445de89217d08f9a57219355df
commit + f8405b1a4f032a125372b03711f6bed1ecac2bd6
blob - 7a871379a422543c416a111e6d2eeaafdd661dc5
blob + 10e3e45656bdb1cc996ef0d92ad2c0a1cd8fab2f
--- src/ngircd/irc.c
+++ src/ngircd/irc.c
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2004 Alexander Barton <alex@barton.de>
+ * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -45,7 +45,36 @@ static bool Send_Message_Mask PARAMS((CLIENT *from, ch
 				      bool SendErrors));
 
 
+/**
+ * Check if a list limit is reached and inform client accordingly.
+ *
+ * @param From The client.
+ * @param Count Reply item count.
+ * @param Limit Reply limit.
+ * @param Name Name of the list.
+ * @return true if list limit has been reached; false otherwise.
+ */
 GLOBAL bool
+IRC_CheckListTooBig(CLIENT *From, const int Count, const int Limit,
+		    const char *Name)
+{
+	assert(From != NULL);
+	assert(Count >= 0);
+	assert(Limit > 0);
+	assert(Name != NULL);
+
+	if (Count < Limit)
+		return false;
+
+	(void)IRC_WriteStrClient(From,
+				 "NOTICE %s :%s list limit (%d) reached!",
+				 Client_ID(From), Name, Limit);
+	IRC_SetPenalty(From, 2);
+	return true;
+}
+
+
+GLOBAL bool
 IRC_ERROR( CLIENT *Client, REQUEST *Req )
 {
 	assert( Client != NULL );
blob - cdeb74580984c2fee70198d83cb81e6e05c67649
blob + c2f9b66244eba0c3fc84db90f1104cd60b4d3758
--- src/ngircd/irc.h
+++ src/ngircd/irc.h
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -17,6 +17,9 @@
  * IRC commands (header)
  */
 
+GLOBAL bool IRC_CheckListTooBig PARAMS((CLIENT *From, const int Count,
+					const int Limit, const char *Name));
+
 GLOBAL bool IRC_ERROR PARAMS((CLIENT *Client, REQUEST *Req));
 GLOBAL bool IRC_KILL PARAMS((CLIENT *Client, REQUEST *Req));
 GLOBAL bool IRC_NOTICE PARAMS((CLIENT *Client, REQUEST *Req));