about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-10-05 13:26:44 +0200
committerEugen Rochko <eugen@zeonfederated.com>2016-10-05 13:26:44 +0200
commitfe77921e4733b330e69a9f2db8be5de9ecefc8af (patch)
tree1c16f064097824740d3a2a80480b73f61e0d9afe /app
parentb0788854141a98da8fc4da1dbbfaf2a3239e3760 (diff)
Catching more exceptions that slipped through, removing AR logging from
production as it's very verbose and not very useful
Diffstat (limited to 'app')
-rw-r--r--app/controllers/api_controller.rb4
-rw-r--r--app/controllers/application_controller.rb6
-rw-r--r--app/controllers/stream_entries_controller.rb15
-rw-r--r--app/services/fetch_atom_service.rb3
-rw-r--r--app/services/fetch_remote_account_service.rb2
-rw-r--r--app/services/fetch_remote_status_service.rb3
6 files changed, 27 insertions, 6 deletions
diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb
index c550b38e8..4ccf20bc9 100644
--- a/app/controllers/api_controller.rb
+++ b/app/controllers/api_controller.rb
@@ -18,6 +18,10 @@ class ApiController < ApplicationController
     render json: { error: 'Remote data could not be fetched' }, status: 503
   end
 
+  rescue_from OpenSSL::SSL::SSLError do
+    render json: { error: 'Remote SSL certificate could not be verified' }, status: 503
+  end
+
   protected
 
   def current_resource_owner
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index c8d7e2084..1f991cf67 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -30,6 +30,12 @@ class ApplicationController < ActionController::Base
     end
   end
 
+  def gone
+    respond_to do |format|
+      format.any { head 410 }
+    end
+  end
+
   def current_account
     current_user.try(:account)
   end
diff --git a/app/controllers/stream_entries_controller.rb b/app/controllers/stream_entries_controller.rb
index e1b664b08..a364fa01c 100644
--- a/app/controllers/stream_entries_controller.rb
+++ b/app/controllers/stream_entries_controller.rb
@@ -8,13 +8,16 @@ class StreamEntriesController < ApplicationController
   def show
     @type = @stream_entry.activity_type.downcase
 
-    if @stream_entry.activity_type == 'Status'
-      @ancestors   = @stream_entry.activity.ancestors
-      @descendants = @stream_entry.activity.descendants
-    end
-
     respond_to do |format|
-      format.html
+      format.html do
+        return gone if @stream_entry.activity.nil?
+
+        if @stream_entry.activity_type == 'Status'
+          @ancestors   = @stream_entry.activity.ancestors
+          @descendants = @stream_entry.activity.descendants
+        end
+      end
+
       format.atom
     end
   end
diff --git a/app/services/fetch_atom_service.rb b/app/services/fetch_atom_service.rb
index 4be7f6355..f2625dcaa 100644
--- a/app/services/fetch_atom_service.rb
+++ b/app/services/fetch_atom_service.rb
@@ -12,6 +12,9 @@ class FetchAtomService < BaseService
     else
       return process_html(fetch(url))
     end
+
+  rescue OpenSSL::SSL::SSLError => e
+    Rails.logger.debug "SSL error: #{e}"
   end
 
   private
diff --git a/app/services/fetch_remote_account_service.rb b/app/services/fetch_remote_account_service.rb
index 5f45f9b28..83a81a61b 100644
--- a/app/services/fetch_remote_account_service.rb
+++ b/app/services/fetch_remote_account_service.rb
@@ -19,5 +19,7 @@ class FetchRemoteAccountService < BaseService
     Rails.logger.debug "Going to webfinger #{username}@#{domain}"
 
     return FollowRemoteAccountService.new.call("#{username}@#{domain}")
+  rescue Nokogiri::XML::XPath::SyntaxError
+    Rails.logger.debug "Invalid XML or missing namespace"
   end
 end
diff --git a/app/services/fetch_remote_status_service.rb b/app/services/fetch_remote_status_service.rb
index 24a63e841..a507fbeed 100644
--- a/app/services/fetch_remote_status_service.rb
+++ b/app/services/fetch_remote_status_service.rb
@@ -31,5 +31,8 @@ class FetchRemoteStatusService < BaseService
     Rails.logger.debug "Going to webfinger #{username}@#{domain}"
 
     return FollowRemoteAccountService.new.call("#{username}@#{domain}")
+  rescue Nokogiri::XML::XPath::SyntaxError
+    Rails.logger.debug "Invalid XML or missing namespace"
+  end
   end
 end