lelegram: stuckness fixes, timeout

Change-Id: I3c1ad4e589ea66db846a56aab8a2c1698bdee539
diff --git a/personal/q3k/lelegram/main.go b/personal/q3k/lelegram/main.go
index ef1ce37..f4360a9 100644
--- a/personal/q3k/lelegram/main.go
+++ b/personal/q3k/lelegram/main.go
@@ -6,6 +6,7 @@
 	"fmt"
 	"strconv"
 	"strings"
+	"time"
 
 	"code.hackerspace.pl/hscloud/go/mirko"
 
@@ -155,12 +156,14 @@
 			// This blocks until success or failure, making sure the log stays
 			// totally ordered in the face of some of our IRC connections being
 			// dead/slow.
-			err := s.mgr.SendMessage(m.user, text)
+			ctxT, cancel := context.WithTimeout(ctx, 15*time.Second)
+			err := s.mgr.SendMessage(ctxT, m.user, text)
 			if err != nil {
 				glog.Warningf("Attempting redelivery of %v after error: %v...", m, err)
-				err = s.mgr.SendMessage(m.user, text)
+				err = s.mgr.SendMessage(ctx, m.user, text)
 				glog.Errorf("Redelivery of %v failed: %v...", m, err)
 			}
+			cancel()
 
 		case n := <-s.ircLog:
 			// Notification from IRC (message or new nickmap)