IRC Quit Message FAQ
Version 1.2 - Written by David-R
Table Of Contents
2.0 Read/Write error quit messages
3.0 Ping timeout
1.1 What IRC quit messages are
Quit messages are used in IRC protocol to either describe where the user is going via a custom quit message, or the error which caused the disconnection. Custom quit messages can be created by the user to show or tell where they are going. They cannot exceed 200 characters, and they are limited to a single line. Error quit messages can be used to describe what happened upon disconnection from the server.
1.2 Where they are displayed
The display of a quit message is pretty straightforward. When the user disconnects, a message is displayed in the channel window. A quit message is not shown in a query/chat window when the user quits, so if you don't receive an answer in a private chat, do a /whois to check. In the channel, the usual quit text is "Nick has quit IRC (message)." In the message area, a description is placed. This can either be a custom quit message, or an error quit message as described above.
1.3 How to gather information from quit messages
Besides gathering information of where a user is going that caused them to disconnect (i.e., a custom quit message), error quit messages can also provide information on the reason for disconnection. For example, error quit messages can be "Read error," "Write error," "Ping timeout," etc. These each describe what occurred. Refer to the sections on these three items below for more information.
1.4 Customizing quit messages
Many users customize their quit message to describe why they left. To do this, simply enter "/quit (reason)." When this command is entered, the following will be displayed: "*** Blah has quit IRC (reason)." For example, if my nick is John, and I typed "/quit Leaving," it would display: "*** John has quit IRC (Leaving)." Custom quit messages cannot exceed 200 characters in length.
2.1 Read error definition
A read error occurs when a server cannot successfully read from a user's client. Servers gather information from the client by text, setup, and other items. When the server receives an error when reading from a client, it then disconnects the user, resulting in a read error quit message. For example: *** John has quit IRC (Read error to John[undernet.org]: EOF from client). This error was caused because the server expected more information from a file and the file responded with an EOF (end of file) error.
2.2 Write error definition
A write error occurs when a server cannot successfully write to a user's client. When the server receives information, it usually responds with information of its own. When the server receives an error when writing to a client, it then disconnects the user, resulting in a write error quit message similar to the read error format. For example: *** John has quit IRC (Write error to John[undernet.org], closing link). This error was caused because the server closed the link when attempting to send data to the client.
2.3 Connection reset by peer
Many times when a user disconnects because of an error, a "connection reset by peer" is included. This means when the user quit, the connection was reset by the server. This immediately disconnects any ghost that may be present and allows the user to connect to the server once again.
3.1 When they occur
Servers automatically ping users at a preset time. The reason for this is to ensure the client is still connected to the server. When you see "PING? PONG!" results in your status window, it means the server has pinged your client, and it has responded back with a pong to ensure the server that you are still connected. When this does not happen and you disconnect without the server's knowledge, the server will automatically disconnect the user when it does not receive a response, resulting in a ping timeout. For example, if the server pinged our friend John, and John's client didn't respond, it would result in: *** John has quit IRC (Ping timeout for John[undernet.org])
3.2 Avoiding Ping timeouts
There is no real way to avoid a ping timeout. They are caused often because of overloading of a client, overloading of a server, unreliable ISP connection, etc. Usually they occur when the client has not performed any operation for a considerable amount of time (for example, staying on IRC while not doing anything). Ping timeouts occur to everyone.
3.3 Definition of ping
A ping is a tool that users and servers use to measure the amount of time between the sending of the command and the receiving back. When a user pings another user, it sends the command to the server. The server sends it to the user's server, and then to the user's client. The client responds, sends it to his server and responds to the initial pinger's server. Then, a ping time is usually displayed. This same action is performed when a line of text is sent. It is helpful to measure how long it takes the person/people you are chatting with to see what you do.
4.1 Other quit messages
There are other quit messages which can show, for example, a netsplit. This is described in 4.2 of this FAQ. Bots and scripts also can use quit messages to show users why they disconnected. They are often coded into the bot by the programmer so he knows why it disconnected. For example, the Undernet Channel Service bots sometimes disconnect with: *** X has quit IRC (Received SIGSEGV :(). This is a result of a memory error X encountered.
You also may experience nick collision kills when the net junctions after a netsplit. This usually happens when two users with the same nick on each side during a netsplit join together. Since both users cannot continue with the same nickname, the oldest user (the one who has been online during that session the longest) keeps the nick, and the newer user is killed and must reconnect with a different nickname.
The same nick collision kill occurs even if the same user is on both sides of the netsplit with the same hostmask, when it junctions.
4.2 Recognizing a netsplit
Quit messages can also show when a netsplit occurs. This is usually shown by the two servers which split apart. For example, if John disconnected because irc.server.one and irc.server.two split, it would probably result with *** John has quit IRC (irc.server.one irc.server.two).
4.3 Oper-resulted quit messages
When an IRCop (Oper) disconnects a user, it can be shown in the user's quit message. For example, if John was G-lined from the Undernet, it would show: *** John has quit IRC (G-lined). The same occurs when a K-line is enforced. When an oper /kills another user from a server, it is also shown in the quit message. For example, if John was /killed by Bob because John was running "clones," it would show: *** John has quit IRC (Killed (Bob (clones))).
4.4 Other references
Many other IRC FAQs include information on quit messages. You can find these via FTP or via the World Wide Web. Use your favorite search engine to search for IRC, IRC FAQ, and Undernet. The IRCPrimer also contains information. This document is available via WWW and FTP.
© 1996, 1997 Undernet User Committee
Return to main Documents Project page