Merge pull request #40 from aybabtme/assert-type-avoid-panics
Checks that the `error` field is really of `error` type.
diff --git a/hooks/airbrake/airbrake.go b/hooks/airbrake/airbrake.go
index f24f00d..d92dc88 100644
--- a/hooks/airbrake/airbrake.go
+++ b/hooks/airbrake/airbrake.go
@@ -24,11 +24,21 @@
return nil
}
- err := airbrake.Notify(entry.Data["error"].(error))
- if err != nil {
+ err, ok := entry.Data["error"].(error)
+ if !ok {
entry.Logger.WithFields(logrus.Fields{
"source": "airbrake",
"endpoint": airbrake.Endpoint,
+ }).Warn("Exceptions sent to Airbrake must have an `error` key of type `error`")
+ return nil
+ }
+
+ airErr := airbrake.Notify(err)
+ if airErr != nil {
+ entry.Logger.WithFields(logrus.Fields{
+ "source": "airbrake",
+ "endpoint": airbrake.Endpoint,
+ "error": airErr,
}).Warn("Failed to send error to Airbrake")
}