lelegram: stuckness fixes, timeout
Change-Id: I3c1ad4e589ea66db846a56aab8a2c1698bdee539
diff --git a/personal/q3k/lelegram/irc/manager_control.go b/personal/q3k/lelegram/irc/manager_control.go
index 68e9002..4e6b0b7 100644
--- a/personal/q3k/lelegram/irc/manager_control.go
+++ b/personal/q3k/lelegram/irc/manager_control.go
@@ -8,16 +8,23 @@
)
// Control: send a message to IRC.
-func (m *Manager) SendMessage(user, text string) error {
+func (m *Manager) SendMessage(ctx context.Context, user, text string) error {
done := make(chan error)
- m.ctrl <- &control{
+
+ msg := &control{
message: &controlMessage{
from: user,
message: text,
done: done,
},
}
- return <-done
+
+ select {
+ case <-ctx.Done():
+ return ctx.Err()
+ case m.ctrl <- msg:
+ return <-done
+ }
}
// Control: subscribe to notifiactions.