lelegram: stuckness fixes, timeout
Change-Id: I3c1ad4e589ea66db846a56aab8a2c1698bdee539
diff --git a/personal/q3k/lelegram/irc/conn.go b/personal/q3k/lelegram/irc/conn.go
index 7f130ca..9f1f4ef 100644
--- a/personal/q3k/lelegram/irc/conn.go
+++ b/personal/q3k/lelegram/irc/conn.go
@@ -4,6 +4,7 @@
"context"
"fmt"
"net"
+ "regexp"
"strings"
"sync"
"sync/atomic"
@@ -52,6 +53,8 @@
connected int64
}
+var reIRCNick = regexp.MustCompile(`[^a-z0-09]`)
+
// Say is called by the Manager when a message should be sent out by the
// connection.
func (i *ircconn) Say(msg *controlMessage) {
@@ -100,10 +103,14 @@
}
// Generate IRC nick from username.
- nick := user
+ nick := reIRCNick.ReplaceAllString(user, "")
if len(nick) > 13 {
nick = nick[:13]
}
+ if len(nick) == 0 {
+ glog.Errorf("Could not create IRC nick for %q", user)
+ nick = "wtf"
+ }
nick += "[t]"
// Configure IRC client to populate the IRC Queue.
@@ -186,7 +193,7 @@
})
if err != nil {
glog.Errorf("IRC/%s: WriteMessage: %v", i.user, err)
- die()
+ die(err)
s.done <- err
return
}