FallbackRedirector: Do not crash on Metadata rendering errors
authorrinpatch <rinpatch@sdf.org>
Mon, 8 Jul 2019 09:59:49 +0000 (12:59 +0300)
committerrinpatch <rinpatch@sdf.org>
Mon, 8 Jul 2019 09:59:49 +0000 (12:59 +0300)
CHANGELOG.md
lib/pleroma/web/router.ex

index 3dbbd822579e1266c2a1e78f8b03b81c8316cafa..25fcf9dd412b1900c7a602416e830a1fb9d7fd50 100644 (file)
@@ -11,7 +11,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 - Admin API: Return avatar and display name when querying users
 
 ### Fixed
-- Not being able to pin unlisted posts
+- Not being able to pin unlisted postss
+- Metadata rendering crashes no longer result in 500 errors
 - Mastodon API: Handling of search timeouts (`/api/v1/search` and `/api/v2/search`)
 
 ### Changed
index 055289dc56bfbfb31d336f9096fb7c06877d72b8..ff9ed1640c069b9a032560be9124e5a291eac439 100644 (file)
@@ -724,6 +724,7 @@ end
 
 defmodule Fallback.RedirectController do
   use Pleroma.Web, :controller
+  require Logger
   alias Pleroma.User
   alias Pleroma.Web.Metadata
 
@@ -750,7 +751,20 @@ defmodule Fallback.RedirectController do
 
   def redirector_with_meta(conn, params) do
     {:ok, index_content} = File.read(index_file_path())
-    tags = Metadata.build_tags(params)
+
+    tags =
+      try do
+        Metadata.build_tags(params)
+      rescue
+        e ->
+          Logger.error(
+            "Metadata rendering for #{conn.request_path} failed.\n" <>
+              Exception.format(:error, e, __STACKTRACE__)
+          )
+
+          ""
+      end
+
     response = String.replace(index_content, "<!--server-generated-meta-->", tags)
 
     conn