summary refs log tree commit diff
path: root/chat.c
diff options
context:
space:
mode:
authorC. McEnroe2020-03-17 11:58:50 -0400
committerC. McEnroe2020-03-17 11:58:50 -0400
commit1d5c4a5e346f0a295818441eb37697be283130ec (patch)
tree2489786631df84fcacca766a4917d4002298ab59 /chat.c
parent2f53f75892494eb2f2177a21f4cbaf92a6d7ab06 (diff)
Send blank line after 10 minutes idle
Without this, I was having catgirl "time out" from pounce's POV, but
without catgirl noticing anything... I still don't understand this. Been
using this fix for a couple weeks though and it stopped happening, and
it's otherwise harmless, but yikes.
Diffstat (limited to 'chat.c')
-rw-r--r--chat.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/chat.c b/chat.c
index fa1240a..e998812 100644
--- a/chat.c
+++ b/chat.c
@@ -264,7 +264,7 @@ int main(int argc, char *argv[]) {
 		{ .events = POLLIN, .fd = execPipe[0] },
 	};
 	while (!self.quit) {
-		int nfds = poll(fds, (self.restricted ? 2 : ARRAY_LEN(fds)), -1);
+		int nfds = poll(fds, (self.restricted ? 2 : ARRAY_LEN(fds)), 600000);
 		if (nfds < 0 && errno != EINTR) err(EX_IOERR, "poll");
 		if (nfds > 0) {
 			if (fds[0].revents) uiRead();
@@ -273,6 +273,11 @@ int main(int argc, char *argv[]) {
 			if (fds[3].revents) execRead();
 		}
 
+		// XXX: Socket seems to just stop working when connected to something
+		// like pounce which sends no pings and there is no activity for a long
+		// time, so just send something...
+		if (!nfds) ircFormat("\r\n");
+
 		if (signals[SIGHUP]) self.quit = "zzz";
 		if (signals[SIGINT] || signals[SIGTERM]) break;