chiark / gitweb /
Proposed "tell" specification.
[ircbot] / irccore.tcl
index 5d28cef85d21aff387c5b74d2bfd91dd985a9168..1721cec74b7816bffc673fa6a332a520c9a3ddc0 100644 (file)
@@ -16,6 +16,7 @@ defset out_maxburst 6
 defset out_interval 2100
 defset out_lag_lag 5000
 defset out_lag_very 25000
+defset ownping_every 300000
 
 defset marktime_min 300
 defset marktime_join_startdelay 5000
@@ -165,7 +166,9 @@ proc bgerror {msg} {
 proc onread {args} {
     global sock nick calling_nick errorInfo errorCode line_org_endchar
 
-    if {[gets $sock line] == -1} { fail "EOF/error on input" }
+    if {[catch { gets $sock line } rv]} { fail "error on input: $rv" }
+    if {$rv == -1} { fail "EOF on input" }
+
     set line_org_endchar [string range $line end end]
     regsub -all "\[^ -\176\240-\376\]" $line ? line
     set org $line
@@ -263,11 +266,18 @@ proc msg_PING {p c s1} {
     sendout PONG $s1
 }
 
+proc sendownping {} {
+    global ownping_every nick
+    sendout ping $nick
+    after $ownping_every sendownping
+}
+
 proc msg_001 {args} {
     global muststartby_after
     if {[info exists muststartby_after]} {
        after cancel $muststartby_after
        unset muststartby_after
+       sendownping
        connected
     }
 }