| Age | Commit message (Collapse) | Author |
|
This allows to use "*!<user>@<host>" or "*!*@<host>" masks to reject
clients even before receiving PASS, NICK and USER commands and before
forking authentication child processes which reduces resource usage.
|
|
- Use Client_Reject(), get rid of Reject_Client().
- Refactor Class_IsMember() to Class_GetMemberReason(),
- New function Class_HandleServerBans().
|
|
|
|
|
|
|
|
This allows a channel operator to define exception masks that allow users
to join the channel even when a "ban" would match and prevent them from
joining: the exception list (e) overrides the ban list (b).
|
|
|
|
|
|
And enhance our test suite to check this a little bit better :-)
|
|
Process further targets, even if one has been a server ID:
just skip this one with an error message and continue.
|
|
If the target user of a PRIVMSG or NOTICE command has the user mode 'C'
set, it is required that both sender and receiver are on the same channel.
This prevents private flooding by completely unknown clients.
|
|
|
|
|
|
- New function Lists_Count().
- New limit #define MAX_HNDL_CHANNEL_LISTS = 50.
- New numeric #define ERR_LISTFULL_MSG(478).
- Adjust numeric RPL_ISUPPORT2_MSG(005) accordingly ("MAXLIST")
|
|
|
|
This prototype has been introduced by commit fa7bb279 in 2006,
but as far as I can see, this function never existed ...
|
|
- Check correct list for duplicates when adding items.
- Don't generate any messages when adding duplicates or removing
non-existing items (this is how ircd-seven and ircu behave).
- Code cleanup: Add_Ban_Invite(), Del_Ban_Invite().
|
|
|
|
Commit 565523cb allowed processing of further channel names given to the
JOIN command when a single name was invalid.
After this patch, the JOIN command handler continues to process channel
name lists even after errors like "channel is full", "too many channels",
and the like and generates appropriate error messages for all the
channels given by the client.
|
|
Don't check the channel limit and don't report "too many channels"
when trying to join a channel that the client is already a member of.
|
|
The daemon reported ERR_UMODEUNKNOWNFLAG(501), which is wrong.
|
|
|
|
Introduce new #define's MAX_RPL_LIST(100), MAX_RPL_WHO(25),
MAX_RPL_WHOIS(10), and MAX_RPL_WHOWAS(25).
|
|
It the limit is reached, a NOTICE is sent to the client and list
processing should stop.
|
|
|
|
|
|
To streamline naming, in preparation for MAX_RPL_WHO and MAX_RPL_WHOWAS :-)
|
|
|
|
"Maximum number of channel modes with parameter allowed per MODE command."
See <http://www.irc.org/tech_docs/005.html> for details.
|
|
This fixes 98493077.
|
|
Limit the MODE command to handle a maximum of MAX_CMODES_ARG (5) channel
modes that require an argument (+Ibkl) per call.
Please note: Further modes that require arguments are silently ignored
and end the handling of any further modes.
This is similar to the behavior of ircd2.11 (silently ignores but seems
to handle other modes) as well as ircd-seven (silently ignores but handles
some(!) other modes) ...
|
|
For example, don't generate wrong error messages when handling
"MODE #chan +IIIIItn *!aa@b *!bb@c *!cc@d *!dd@e *!ee@f".
|
|
The assert(client != NULL) got triggered during our tests, so there is
an error path that resulted in the connection being still established
(sock >= 0) but the client structure already freed.
So Conn_Write() should handle it!
|
|
It could be invalid when calling Proc_Close() a 2nd time, for exmaple,
which could happen when we hit a timeout doing IDENT requests :-(
|
|
And make sure that RPL_ENDOFWHOIS replies with the unmodified mask
like it has been received from the client.
|
|
Thanks to Cahata for spotting this!
|
|
Up to now, each reply for itself ended in RPL_ENDOFWHOIS and queries
for unknown nick names lacked the RPL_ENDOFWHOIS -- both is wrong.
|
|
The <mask> can be used to limit the servers shown in the listing.
|
|
|
|
This reduces the possibility of flooding channels with commands like
"PRIVMSG/NOTICE #a,#n,#c,... :message" a little bit.
Problem noticed by Cahata -- thanks!
|
|
Until now, the penalty time has only been set when longer as the
already set one, so it didn't accumulate.
And add documentation for and clean up code in Conn_SetPenalty() and
Conn_ResetPenalty() functions.
|
|
|
|
|
|
This partly closes bug #118. ngIRCd still starts up even when
Server{UID|GID} is invalid: then the daemon falls back to "nobody"
when running with root(0) privileges (as before).
|
|
|
|
|
|
|
|
commit 15fec92ed75c3de0b32c40d005e93e3f61aef77e
(Update list item, if it already exists) can make ngircd
crash because 'Reason' can be NULL, as reported by
Cahata on the ngircd mailing list.
Doesn't affect any released ngircd versions.
Also, make sure that we do not pass NULL as arguments
to a '%s' printf-like function.
|
|
When JOIN is received with more than one channel name, don't stop
processing on the first error (e.g. bad name, wrong channel key, ...)
but report an error and continue with the other given channel names.
Reported by Cahata -- thanks!
|
|
|