summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-10-28 12:58:30 -0700
committerBrion Vibber <brion@pobox.com>2010-10-28 12:58:30 -0700
commitfb0c3f4f991464e36932137730743131f8ace68c (patch)
tree5091ae9cc359a6c490112f21d5e967bcad5e10ee
parent9ea7cafd27e9037b7d283c4ba6d4c41361195ee9 (diff)
Kill a ping queue item if we get an error on loading up the notice's poster's profile, rather than letting the item be retried over and over as if it were a transitory error.
This shouldn't generally happen as it's an indicator of database inconsistency, but it's a condition we know happens.
-rw-r--r--lib/ping.php9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/ping.php b/lib/ping.php
index be2933ae3..abf1c4048 100644
--- a/lib/ping.php
+++ b/lib/ping.php
@@ -27,7 +27,14 @@ function ping_broadcast_notice($notice) {
# Array of servers, URL => type
$notify = common_config('ping', 'notify');
- $profile = $notice->getProfile();
+ try {
+ $profile = $notice->getProfile();
+ } catch (Exception $e) {
+ // @todo: distinguish the 'broken notice/profile' case from more general
+ // transitory errors.
+ common_log(LOG_ERR, "Exception getting notice profile: " . $e->getMessage());
+ return true;
+ }
$tags = ping_notice_tags($notice);
foreach ($notify as $notify_url => $type) {