Understanding Network Timeouts and Other Connection Issues

Home
Codeux Software and its projects are no longer maintained at a full-time capacity.
This article may contain information which is no longer accurate or relevant.
Users of Textual can find a community driven support channel on Libera Chat.
Sorry for any inconvenience.

Connecting to IRC involves multiple steps from the moment Textual initiates a connection to when the data reaches a server. Understanding these steps can help diagnose connectivity issues, including network timeouts. The process can be broken down into three steps: initiating the connection, routing to the destination, and data arriving at the destination.

Initiating the Connection: macOS

When Textual connects to a server, macOS first determines how to establish the connection. This involves:

Possible Timeouts at This Stage

Routing to Destination: The Data's Journey Across Networks

Once the connection is established, data must travel across various networks to reach the server. This process includes:

Possible Timeouts at This Stage

Data Arriving at Destination: Reaching the Server

Once the data reaches the server, the final steps involve:

Possible Timeouts at This Stage

Understanding these steps can help diagnose connection issues by pinpointing where the failure or delay occurs. Whether it is a DNS issue, network congestion, or a server-side timeout, knowing how data moves through the network can lead to more effective troubleshooting.

Configuring Textual

With a clearer understanding of networking and the potential causes of connection issues, you can now adjust various settings in Textual to improve connection stability:

Per-Server Connection Preferences

Several settings that can be configured in the Advanced section of Server Properties (Command + U). These include:

Connection Type: IPv4 / IPv6 / Automatic

IPv4 and IPv6 are different protocols for establishing connections. IPv4 requires more network routing, which can sometimes introduce latency or other side effects. However, this doesn’t always lead to disconnections.
Experimenting with this setting may help, but keep in mind that not all internet providers support IPv6.

Periodically PING the server to verify the connection

If no data is received from the server within a certain time period, then Textual sends a test message to confirm the connection is still active. It is recommended to keep this setting enabled.

Force a disconnect when no PING response is received

If the server does not respond to a test message within a certain time period, then the connection is disconnected to allow faster reconnect. It is recommended to keep this setting enabled.

Force a disconnect on reachability changes

If Textual detects an internet disruption (e.g., losing Wi-Fi connection), it will automatically disconnect from the server. Textual will notify you if this is the reason for the disconnection. It is recommended to keep this setting enabled.

Legacy Sockets

By default, Textual uses Apple’s Network framework to manage connections. If you are unfamiliar with this, don’t worry. Just know that Textual can be configured to bypass it. To do so, navigate to “Hidden Preferences” in the Help menu. Uncheck “Prefer modern sockets.” This setting forces Textual to use an alternative method for establishing connections.

Why One IRC Client May Stay Connected While Textual Times Out

Several factors can contribute to one client maintaining a stable connection while Textual experiences frequent timeouts:

Understanding these differences can help troubleshoot why one client stays connected while Textual times out.

 
The contents of this webpage are released into the Public Domain for unlimited distribution.