ref: f78eb3deae2b86a923de513c134e98470c010017
parent: ce659df9bcc2fa571e9e1bb7ff7ed48c3f192b84
author: Ori Bernstein <ori@eigenstate.org>
date: Thu Jun 8 16:36:27 EDT 2017
Redial on disconnects.
--- a/irc.myr
+++ b/irc.myr
@@ -1,6 +1,7 @@
use std
use sys
use bio
+use thread
use termdraw
pkg =
@@ -61,9 +62,31 @@
else
io(cli, fd)
;;
+ redial(cli)
;;
}
+const redial = {cli+ for s in cli.srv
+ if s.live
+ continue
+ ;;
+ match std.dial(s.ds)
+ | `std.Ok fd:
+ s.fd = fd
+ if !handshake(cli, s)
+ std.close(s.fd)
+ continue
+ ;;
+ s.live = true
+ for c in s.chan
+ send(cli, s, "JOIN {}\r\n", c.name)+ ;;
+ | `std.Err e:
+ ;;
+ ;;
+}
+
const io = {cli, fdvar src, cmd, args
var srv, ln
@@ -103,8 +126,8 @@
| "353": addnames(cli, srv, args)
| "366": shownames(cli, [][:])
| "PRIVMSG": recievemsg(cli, srv, src, args)
- | "PING": send(cli, srv, "PONG :{}\r\n", args[0])- | "JOIN": joinchan(cli, srv, src, args, ln)
+ //| "PING": send(cli, srv, "PONG :{}\r\n", args[0])+ | "JOIN": joined(cli, srv, src, args)
//| "PART": joinchan(cli, srv, src, args, ln)
| c:
status(cli, "unknown server command {}\n", ln)@@ -114,7 +137,7 @@
;;
}
-const joinchan = {cli, srv, src, args, ln+const joined = {cli, srv, src, argsvar c
if args.len == 1
@@ -545,6 +568,8 @@
cli.input = ""
| `termdraw.Kup:
| `termdraw.Kdown:
+ | `termdraw.Winsz _:
+ redraw(cli)
| r:
s = std.fmt("{}\n", r)std.sljoin(&cli.self.buf, s)
--
⑨