From 86f9c39ed83d2cab2d4a69842252266f010b5d0a Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Tue, 14 May 2019 19:47:44 +0200
Subject: [PATCH] Fixed error handling

---
 monitor_quassel.go | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/monitor_quassel.go b/monitor_quassel.go
index 8764b23..fa5bab9 100644
--- a/monitor_quassel.go
+++ b/monitor_quassel.go
@@ -1,6 +1,8 @@
 package main
 
 import (
+	"errors"
+	"fmt"
 	"github.com/sirupsen/logrus"
 	"time"
 )
@@ -20,6 +22,13 @@ func (m *QuasselMonitor) Config() *ConfigComponent {
 }
 
 func (m *QuasselMonitor) Measure() (Datapoint, error) {
+	var err error
+	defer func() {
+		if r := recover(); r != nil {
+			err = errors.New(fmt.Sprintf("Caught error: %v", r))
+		}
+	}()
+
 	before := time.Now()
 	conn := Connect(ConnectOptions{
 		ConnectionOptions: ConnectionOptions{
@@ -30,11 +39,15 @@ func (m *QuasselMonitor) Measure() (Datapoint, error) {
 		Verify: !m.config.Quassel.Insecure,
 	})
 	defer conn.Close()
+
 	after := time.Now()
 	latency := int(after.Sub(before).Nanoseconds() / 1000000)
+	if err == nil {
+		err = conn.Error()
+	}
 
-	if conn.Error() != nil {
-		logrus.Infof("Monitor %s: %s", conn.Error())
+	if err != nil {
+		logrus.Infof("Monitor %s: %s", err)
 		return Datapoint{
 			Time:    after,
 			Up:      false,
-- 
GitLab