# IRC Services Manual

## Appendix D. Known issues

Table of Contents

There are a few issues which have been reported as bugs in the past or discovered by the author, but which either are not consistently reproduceable or are a consequence of the way Services works and not easily avoidable. These issues are listed below.

### Nickname and NickServ issues

- When setting NickServ options for other users as a Services administrator, NickServ will incorrectly respond with "Your (option name) has been changed" or similar messages, as though the Services admin's nickname settings had been changed. (The target nickname's settings are in fact correctly modified, while the admin's settings are left alone.)

- If you disable one or more of the `nickserv/access`, `nickserv/autojoin`, `memoserv/main`, and `memoserv/ignore modules`, delete a nickgroup, create a new nickgroup that has the same ID, and re-enable the module(s), the new nickgroup will keep any data from those module(s) that belonged to the old nickgroup. Since nickgroup IDs are assigned randomly, this should be a rare occurrence.

### Channel and ChanServ issues

- Services appears to incorrectly detect "mode bouncing" (i.e., the IRC server reversing Services' mode changes) in some cases. When this occurs, commands like `KICK` and `TOPIC` as well as auto-ops and mode locking will no longer work on that channel. If this problem occurs, appropriate messages will be written to the log file; the problem can be worked around by either clearing the channel (removing all users from the channel) or restarting Services. Adding the `NoBouncyModes` directive in `ircservices.conf` will prevent this problem from occurring, but will cause mode floods if you have an incorrectly configured server on your network.

- If a user without auto-op privileges enters a registered, empty channel and sends a MODE command to change the channel modes before Services removes the user's channel operator privileges, the changed modes will remain in effect on the channel. On some IRC servers, such as InspIRCd and ircd-ratbox, this can be avoided by setting the `CSSetChannelTime` option in `modules.conf`.

- When kicking users from forbidden channels (or in other cases when a user tries to join an empty channel and is kicked), Services will generate debug log messages about "`MODE +b for unknown channel`". These are a side effect of the order in which Services processes the operations involved in the kickban; they are harmless and can be safely ignored. The same or similar messages can also appear during a netburst when modes are sent for a channel after all the users in the channel have been kicked, or when joins and modes are sent for a user who gets autokilled.

- If you try to enter an empty channel and get kicked and banned by ChanServ, you cannot get in with `UNBAN` or `INVITE` even if you would normally have privileges to do so because ChanServ reports that the channel does not exist. This is because ChanServ does not keep track of channels that it is currently residing in after a kickban in the same way that it does for ordinary users.

- When using protocols that support ban exceptions, users can get around the "ban" part of a kickban in an empty channel by sending a ban exception quickly enough that the server processes it before Services is able to kick the user, allowing the user to repeatedly rejoin the channel (and get immediately kicked again). This is a side effect of Services not tracking empty channels in which ChanServ is residing, but if your IRC server's flood protection is set up properly, this will not be a problem in practice (there are many ways for users to generate more network traffic than a join/part loop).

- There appear to be some cases in which channel modes (`+k` and `+o` have been reported) are set twice in succession for the same channel. This naturally has no effect on the channel itself, but some users have reported it as annoying. Services attempts to detect and correct this, but it may still occur in some cases.

### Administration and other issues

- If you are not using encrypted passwords, then all passwords will be truncated to be at most 32 characters (or `PASSMAX` characters, if you change the value of `PASSMAX` in the `defs.h` source file) long. As a result, any password with the same initial sequence of characters will be treated as a match, even if it is not exactly the same password initially set.

- When setting another nickname's password or a channel's password as a Services administrator, NickServ (or ChanServ) will send out the "`ADMIN used SET PASSWORD as Services admin for TARGET`" global message even if the password change is rejected due to length or similarity with the target nickname or channel name. This is difficult to fix cleanly in the current code structure (which is one reason the message was written as "used SET PASSWORD" instead of "changed password"). Since this is expected to be a rare occurrence, clarity of code was given preference over adding special-case processing for this case. Note that setting the `NoAdminPasswordCheck` option in `ircservices.conf` will disable all password checks for Services administrators, thus avoiding this problem.

- When using the Bahamut protocol, Services will log warnings about missing IP addresses each time an opermasked client connects to the network or rejoins after a netsplit. This is unavoidable on Services' part, since the Bahamut protocol does not seem to provide a way to differentiate between opermasked clients and servers which do not send IP addresses at all.

- It has been reported that using the OperServ `JUPE` command on a Bahamut-based network for a server two or more hops away from the Services uplink server can cause Services to be dropped from the network.

- If you compile on a Macintosh (OSX) system using dynamic modules, the `encryption/unix-crypt` module may fail to load. If this happens, compile using static modules instead (`./configure -use-static-modules`).

Back to top

Table of Contents