diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb
index 2c864fd0b6aca2021d83c704025465a5b8d87981..6e54615067b8b18982d76dfa325821bfd0666f62 100644
--- a/app/controllers/publics_controller.rb
+++ b/app/controllers/publics_controller.rb
@@ -49,7 +49,7 @@ class PublicsController < ApplicationController
 
     person = Person.where(:guid => params[:guid]).first
 
-    if person.owner_id.nil?
+    if person.nil? || person.owner_id.nil?
       Rails.logger.error("Received post for nonexistent person #{params[:guid]}")
       render :nothing => true, :status => 404
       return
diff --git a/spec/controllers/publics_controller_spec.rb b/spec/controllers/publics_controller_spec.rb
index a4eb80d1fd61c9cc37a6966c0ff8fff39b335e2d..01c958e83ce0afd6e03eb507118df54bfacf05dd 100644
--- a/spec/controllers/publics_controller_spec.rb
+++ b/spec/controllers/publics_controller_spec.rb
@@ -55,6 +55,10 @@ describe PublicsController do
       post :receive, "guid" => @person.guid.to_s, "xml" => xml
       response.should be_not_found
     end
+    it 'returns a 404 if no person is found' do
+      post :receive, :guid => '2398rq3948yftn', :xml => xml
+      response.should be_not_found
+    end
   end
 
   describe '#hcard' do