From 05e37264154bbcb375b358798c7a8f9b499c4881 Mon Sep 17 00:00:00 2001
From: Ethan Koenig <ethantkoenig@gmail.com>
Date: Thu, 29 Jun 2017 12:10:33 -0400
Subject: [PATCH] Use default avatar on error

---
 models/user.go       | 5 ++---
 modules/base/tool.go | 7 ++++++-
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/models/user.go b/models/user.go
index 6484c8cf69..2a4fb557db 100644
--- a/models/user.go
+++ b/models/user.go
@@ -333,15 +333,14 @@ func (u *User) generateRandomAvatar(e Engine) error {
 // which includes app sub-url as prefix. However, it is possible
 // to return full URL if user enables Gravatar-like service.
 func (u *User) RelAvatarLink() string {
-	defaultImgURL := setting.AppSubURL + "/img/avatar_default.png"
 	if u.ID == -1 {
-		return defaultImgURL
+		return base.DefaultAvatarLink()
 	}
 
 	switch {
 	case u.UseCustomAvatar:
 		if !com.IsFile(u.CustomAvatarPath()) {
-			return defaultImgURL
+			return base.DefaultAvatarLink()
 		}
 		return setting.AppSubURL + "/avatars/" + u.Avatar
 	case setting.DisableGravatar, setting.OfflineMode:
diff --git a/modules/base/tool.go b/modules/base/tool.go
index 0f730868eb..1bf1ce3951 100644
--- a/modules/base/tool.go
+++ b/modules/base/tool.go
@@ -192,6 +192,10 @@ func HashEmail(email string) string {
 	return EncodeMD5(strings.ToLower(strings.TrimSpace(email)))
 }
 
+func DefaultAvatarLink() string {
+	return setting.AppSubURL + "/img/avatar_default.png"
+}
+
 // AvatarLink returns relative avatar link to the site domain by given email,
 // which includes app sub-url as prefix. However, it is possible
 // to return full URL if user enables Gravatar-like service.
@@ -200,6 +204,7 @@ func AvatarLink(email string) string {
 		url, err := setting.LibravatarService.FromEmail(email)
 		if err != nil {
 			log.Error(4, "LibravatarService.FromEmail(email=%s): error %v", email, err)
+			return DefaultAvatarLink()
 		}
 		return url
 	}
@@ -208,7 +213,7 @@ func AvatarLink(email string) string {
 		return setting.GravatarSource + HashEmail(email)
 	}
 
-	return setting.AppSubURL + "/img/avatar_default.png"
+	return DefaultAvatarLink()
 }
 
 // Seconds-based time units