User:K6ka/IRC handbook/Quit messages

When people quit IRC (not to be confused with "parting" from a channel), they may choose to leave a customized message in their "quit message". A quit message is a message that is displayed when a user quits, or disconnects, from IRC. A customizable quit message is only possible, however, if the disconnection was voluntary; if the user was disconnected for other reasons, such as their connection giving out, they will have a pre-written message generated by the server instead, explaining what happened.

This page will go through some of the more common quit messages and explain what they mean.

Quit
JohnnyDoe (~JohnnyD@example.com) has quit (Quit: Leaving)

Any quit message that starts with "Quit:" is a "voluntary" quit. It means the user left IRC using the  command, and either left a customizable quit message behind, or let their client do it for them. The customizable message is located after the initial "Quit:" text.

For example, if the user quit by typing in, other people will see...

JohnnyDoe (~JohnnyD@example.com) has quit (Quit: See you later, alligator!)

Client Quit
JohnnyDoe (~JohnnyD@example.com) has quit (Client Quit)

This is the same as the above, except the client did not send a customizable quit message, and so there was nothing for the server to display, aside from this message.

Ping timeout: <#> seconds
JohnnyDoe (~JohnnyD@example.com) has quit (Ping timeout: 250 seconds)

All IRC servers periodically send what is known as a "PING" request to all clients connected to it. This comes in the form of "PING", followed by a series of numbers (e.g. "PING 8237877"). Your client, when it sees this, will automatically respond with a "PONG" request, and send the series of numbers back to the server (e.g. "PONG 8237877"). When this "pinging and ponging" is complete, both the server and the client know that they are still connected to each other. This all happens without human intervention, so you do not need to worry about your client sending that "PONG" back to the server; if it sees the "PING", it will send the "PONG".

There are various circumstances as to why the "PONG" may not be sent, though. The most common factor is that the client is no longer connected to the Internet. When the server sends the "PING" request, it can't get to the client, and so a "PONG" cannot be sent back. The server will make note of the amount of time that has elapsed since the server last heard from the client. After a period of time, usually around four minutes for regular users, the server will disconnect the "ghost" user. This is seen by other users as "Ping timeout", followed by the number of seconds since the server last heard from them.

Don't be too concerned about this, as ping timeouts happen to everybody.

Read error: Connection reset by peer
JohnnyDoe (~JohnnyD@example.com) has quit (Read error: Connection reset by peer)

This occurs when a client disconnects from the IRC server uncleanly, such as when it crashes. It can also occur when the connection between the server and client encounters a problem, and the client assumed it was disconnected. When the server attempts to contact the client, it realizes that the connection no longer exists, and so disconnects the "ghost" user with the quit message.

This is not the only reason why a "Connection reset by peer" message may occur, as there may be countless circumstances where this quit message is used. We do know that this error message has garnered quite a lot of popularity due to its frequency.

Excess Flood
JohnnyDoe (~JohnnyD@example.com) has quit (Excess Flood)

This occurs when you or your client tried to send too much data to the server in a short period of time, and the server thought you were trying to flood it. This often happens to trolls and malicious users that try to disrupt channel or network operations by spamming the server with requests, although it can also happen to poorly configured bots, bouncers, and clients too. Many modern clients, such as HexChat, have built-in mechanisms that throttle the rate at which information is sent to the server (flood protection), so they don't get kicked off for flood.

Max SendQ exceeded
JohnnyDoe (~JohnnyD@example.com) has quit (Max SendQ exceeded)

IRC servers are busy machines, and so to help alleviate some of the load, they queue up outgoing requests that are sent to users that are connected to them. For example, if you request a server to show you the ban list for a channel, it needs to go through the send queue before being sent to you. If a lot of data needs to be sent, however, chances are your client won't be able to receive that information fast enough. The send queue for each user is limited, and when a user exceeds that limit, the server will disconnect them. This usually happens when you try to request too much information from the server, and the server tries to send you too much as a result. It typically occurs with poorly configured clients, bots, and bouncers, but it can also happen if you have a poor Internet connection.

*.net *.split
JohnnyDoe (~JohnnyD@example.com) has quit (*.net *.split)

This occurs when a netsplit occurs, and the link between you and the other user is broken. Unlike other quit messages, this does not necessarily mean that the other user has actually disconnected from IRC. If the server they are on is still up, and if they don't disconnect, the user will automatically rejoin all the channels they were in when the servers are reconnected.

Killed
JohnnyDoe (~JohnnyD@example.com) has quit (Killed (asimov.freenode.net (Nickname regained by services))) ILoveToAnnoyPeople (~TROLL@1.2.3.4) has quit (Killed (Sigyn (Spam is off topic on freenode))) BotWithConnectionWoes (~servo@crappy.hosting.provider.example.com) has quit (Killed (ImDaOperGuy (Forcing bot to reconnect)))

An IRC "kill" is the network-wide equivalent of a channel "kick". When you kick a user from a channel, that user remains connected to IRC, and if you haven't set a ban on them, they can immediately rejoin. A kill forcefully disconnects a user from the network, but it doesn't bar them from reconnecting and getting back in.

Kills can only be issued by network services, IRC servers, and IRC operators. Typically it's used to kick off trolls and spammers, although kill has some more civil uses too. For example, if someone is using a nickname that you registered with NickServ, or if you've had Internet problems and now there's a ghost user that's in the way, you can use  to instruct NickServ to kill the target user. This can be used to disconnect users that are using your nick, or to simply get rid of a ghost session so you can reclaim your original nickname. Kill can also be used on bots that have auto-reconnect set up; in case they are having issues, they can be killed to trigger a reconnect.

K-Lined
AnnoyingTwerp (~bigjerk@trollhost.example.com) has quit (K-Lined)

A k-line is the network-wide equivalent of a channel ban. When you set a ban on someone in a channel, you prevent that user from joining the channel. A k-line works the same way in that it prevents its intended targets from being able to connect to the IRC server it was placed on. The main difference is that a k-line works immediately when set; any users matching the k-line are disconnected with this quit message when it is set. A channel ban doesn't kick off a banned user in a channel; you need to do that yourself.

Traditionally, a k-line was a "local" ban that only prohibited users from joining a specific server on the network. The user could easily get around that k-line by connecting to another server. Some networks use "G-lines" to circumvent this; a "G-line" is the same as a k-line, except it is a network ban, so that the user cannot connect to any server on the network.

On freenode, k-lines are automatically propagated to other servers on the network, and so a k-line is the same as a g-line.

Changing host
k6ka (k6ka@nice-znc-provider.example.com) has quit (Changing host) k6ka (k6ka@wikimedia/k6ka) has joined

Unlike other quit messages, this does not signify a "real" quit at all. freenode and some other networks support a virtual host, also known as a vHost or "cloak". This is usually applied by network services and is tied to a NickServ account, and is automatically activated when a user successfully authenticates and logs in to their account. A vHost masks the hostname or IP address of the connecting user and replaces it with a custom value. In order to allow other clients in the channel to update their information on the user, the user that has the vHost applied to them will quit with this message, and then immediately rejoin with their vHost on.

In the above example, "nice-znc-provider.example.com" is the hostname of the user, and "wikimedia/k6ka" is the vHost. The user did not actually quit, and to them, nothing has happened. This message only appears to other users, and is sent by the software for tracking purposes.

Disconnected by services
JohnnyDoe (~JohnnyD@example.com) has quit (Disconnected by services)

This quit message is shown to any user that is disconnected via the  command.

This message is only known to appear on freenode; other networks may use a standard "kill" message instead, like:

JohnnyDoe (~JohnnyD@example.com) has quit (Killed (NickServ (GHOST command used by JanetteDoe)))