emacs-circe / circe

Circe, a Client for IRC in Emacs
GNU General Public License v3.0
391 stars 51 forks source link

Fatal error: Error in the pull function. #369

Closed ColemanGariety closed 4 years ago

ColemanGariety commented 4 years ago

It seems like I get disconnected from freenode after 5 minutes or so of inactivity. This is inconvenient for me and I'd like to keep the connection open for much longer (1 hour?).

wasamasa commented 4 years ago

I have my doubts anything can be done about this issue specifically as the IRC protocol mandates clients to respond to "PING" commands with a "PONG". If the client doesn't do that (for example by flaky WiFi, suspend to RAM, ...), it gets disconnected by the server. There's a few things you can do about that:

ColemanGariety commented 4 years ago

@wasamasa the problem cannot be with my computer, because hexchat, weechat, and irssi all stay connected. It is only circe that disconnects. Given this fact, I think it would be wise if you re-opened this issue, as I suspect that not all options have yet been exhausted.

wasamasa commented 4 years ago

There is no reason it can't be with your computer. I've run into similar issues on flaky WiFi myself where even reconnecting wasn't sufficient and resolved them by using a different WiFi hotspot. For debugging I can recommend setting irc-debug-log to t before creating an IRC session and checking a buffer named like "IRC Protocol".

ColemanGariety commented 4 years ago

@wasamasa I guess I kinda phrased my question inappropriately. Circe isn't timing out, it's throwing this error when I try to send a chat after X number of minutes of inactivity:

S: *** Fatal error: Error in the pull function.
E: "***" nil "Fatal" "error:" "Error" "in" "the" "pull" "function."
S: *** Server has terminated the connection abnormally.
E: "***" nil "Server" "has" "terminated" "the" "connection" "abnormally."
E: "conn.disconnected"

Isn't this a bug?

wasamasa commented 4 years ago

Thanks, this is more useful. The error originates from the Gnutls library which is used from Circe by spawning the gnutls-cli command. Searching online for that problem doesn't look terribly hopeful, here's the most relevant hit I've found: https://openconnect-devel.infradead.narkive.com/zLeHrZjK/gnutls-error-in-the-pull-function-cannot-establish-connection-with-vpn-server