some defers in case jabber server disappears
[svn42.git] / r3-netstatus / r3xmppbot / r3xmppbot.go
index b1980da..f795afc 100644 (file)
@@ -157,6 +157,12 @@ func init() {
 func (botdata *XmppBot) handleEventsforXMPP(xmppout chan <- xmpp.Stanza, presence_events <- chan interface{}, jabber_events <- chan JabberEvent) {
     var last_status_msg *string
 
+    defer func() {
+        if x := recover(); x != nil {
+            log.Printf("handleEventsforXMPP: run time panic: %v", x)
+        }
+    }()
+
        for {
                select {
                case pe := <-presence_events:
@@ -278,6 +284,14 @@ func (botdata *XmppBot) handleIncomingMessageDialog(inmsg xmpp.Message, xmppout
 }
 
 func (botdata *XmppBot) handleIncomingXMPPStanzas(xmppin <- chan xmpp.Stanza, xmppout chan<- xmpp.Stanza, jabber_events chan JabberEvent) {
+
+    defer func() {
+        if x := recover(); x != nil {
+            log.Printf("handleIncomingXMPPStanzas: run time panic: %v", x)
+            close(jabber_events)
+        }
+    }()
+
     var incoming_stanza interface{}
     for incoming_stanza = range xmppin {
         switch stanza := incoming_stanza.(type) {