Module: ngircd.git
Branch: master
Commit: f8405b1a4f032a125372b03711f6bed1ecac2bd6
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=f8405b1a…
Author: Alexander Barton <alex(a)barton.de>
Date: Fri Jan 6 20:05:07 2012 +0100
New function IRC_CheckListTooBig() to check size of list replies
It the limit is reached, a NOTICE is sent to the client and list
processing should stop.
---
src/ngircd/irc.c | 31 ++++++++++++++++++++++++++++++-
src/ngircd/irc.h | 5 ++++-
2 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c
index 7a87137..10e3e45 100644
--- a/src/ngircd/irc.c
+++ b/src/ngircd/irc.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2004 Alexander Barton <alex(a)barton.de>
+ * Copyright (c)2001-2012 Alexander Barton (alex(a)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,6 +45,35 @@ static bool Send_Message_Mask PARAMS((CLIENT *from, char *command,
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 )
{
diff --git a/src/ngircd/irc.h b/src/ngircd/irc.h
index cdeb745..c2f9b66 100644
--- a/src/ngircd/irc.h
+++ b/src/ngircd/irc.h
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2008 Alexander Barton (alex(a)barton.de)
+ * Copyright (c)2001-2012 Alexander Barton (alex(a)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));
Module: ngircd.git
Branch: master
Commit: 470d2e236258ce72c6d574b04f1400c0fedc4a3a
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=470d2e23…
Author: Alexander Barton <alex(a)barton.de>
Date: Fri Jan 6 17:46:52 2012 +0100
RPL_ISUPPORT (numeric 005): Report MODES=<MAX_CMODES_ARG>
"Maximum number of channel modes with parameter allowed per MODE command."
See <http://www.irc.org/tech_docs/005.html> for details.
---
src/ngircd/irc-info.c | 4 ++--
src/ngircd/messages.h | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c
index 42b2264..c241265 100644
--- a/src/ngircd/irc-info.c
+++ b/src/ngircd/irc-info.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2011 Alexander Barton (alex(a)barton.de) and Contributors.
+ * Copyright (c)2001-2012 Alexander Barton (alex(a)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
@@ -1568,7 +1568,7 @@ IRC_Send_ISUPPORT(CLIENT * Client)
return IRC_WriteStrClient(Client, RPL_ISUPPORT2_MSG, Client_ID(Client),
CHANNEL_NAME_LEN - 1, Conf_MaxNickLength - 1,
COMMAND_LEN - 23, CLIENT_AWAY_LEN - 1,
- COMMAND_LEN - 113);
+ COMMAND_LEN - 113, MAX_CMODES_ARG);
} /* IRC_Send_ISUPPORT */
diff --git a/src/ngircd/messages.h b/src/ngircd/messages.h
index 7bf7367..cf11ca5 100644
--- a/src/ngircd/messages.h
+++ b/src/ngircd/messages.h
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton <alex(a)barton.de>
+ * Copyright (c)2001-2012 Alexander Barton (alex(a)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
@@ -22,7 +22,7 @@
#define RPL_CREATED_MSG "003 %s :This server has been started %s"
#define RPL_MYINFO_MSG "004 %s %s ngircd-%s %s %s"
#define RPL_ISUPPORT1_MSG "005 %s RFC2812 IRCD=ngIRCd CASEMAPPING=ascii PREFIX=(ov)@+ CHANTYPES=#&+ CHANMODES=bI,k,l,imnPst CHANLIMIT=#&+:%d :are supported on this server"
-#define RPL_ISUPPORT2_MSG "005 %s CHANNELLEN=%d NICKLEN=%d TOPICLEN=%d AWAYLEN=%d KICKLEN=%d PENALTY :are supported on this server"
+#define RPL_ISUPPORT2_MSG "005 %s CHANNELLEN=%d NICKLEN=%d TOPICLEN=%d AWAYLEN=%d KICKLEN=%d MODES=%d PENALTY :are supported on this server"
#define RPL_TRACELINK_MSG "200 %s Link %s-%s %s %s V%s %ld %d %d"
#define RPL_TRACEOPERATOR_MSG "204 %s Oper 2 :%s"