Skip enqueueing to outgoing bridges on incoming remote messages. Twitter, Facebook, RSSCloud, and OStatus checks were enqueued on these when they'd never do anything but churn the queue servers.
Notice::isLocal() can replace a number of manual checks for $notice->is_local being LOCAL_PUBLIC or LOCAL_NONPUBLIC.
This commit is contained in:
parent
791b98046d
commit
5f4c6ec626
|
@ -1861,4 +1861,16 @@ class Notice extends Memcached_DataObject
|
|||
return $ns;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the notice was locally created
|
||||
*
|
||||
* @return boolean locality
|
||||
*/
|
||||
|
||||
public function isLocal()
|
||||
{
|
||||
return ($this->is_local == Notice::LOCAL_PUBLIC ||
|
||||
$this->is_local == Notice::LOCAL_NONPUBLIC);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1235,9 +1235,8 @@ function common_enqueue_notice($notice)
|
|||
$transports[] = 'jabber';
|
||||
}
|
||||
|
||||
// @fixme move these checks into QueueManager and/or individual handlers
|
||||
if ($notice->is_local == Notice::LOCAL_PUBLIC ||
|
||||
$notice->is_local == Notice::LOCAL_NONPUBLIC) {
|
||||
// We can skip these for gatewayed notices.
|
||||
if ($notice->isLocal()) {
|
||||
$transports = array_merge($transports, $localTransports);
|
||||
if ($xmpp) {
|
||||
$transports[] = 'public';
|
||||
|
|
|
@ -585,7 +585,7 @@ class FacebookPlugin extends Plugin
|
|||
|
||||
function onStartEnqueueNotice($notice, &$transports)
|
||||
{
|
||||
if (self::hasKeys()) {
|
||||
if (self::hasKeys() && $notice->isLocal()) {
|
||||
array_push($transports, 'facebook');
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -102,8 +102,10 @@ class OStatusPlugin extends Plugin
|
|||
*/
|
||||
function onStartEnqueueNotice($notice, &$transports)
|
||||
{
|
||||
// put our transport first, in case there's any conflict (like OMB)
|
||||
array_unshift($transports, 'ostatus');
|
||||
if ($notice->isLocal()) {
|
||||
// put our transport first, in case there's any conflict (like OMB)
|
||||
array_unshift($transports, 'ostatus');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -192,24 +192,12 @@ class RSSCloudPlugin extends Plugin
|
|||
|
||||
function onStartEnqueueNotice($notice, &$transports)
|
||||
{
|
||||
array_push($transports, 'rsscloud');
|
||||
if ($notice->isLocal()) {
|
||||
array_push($transports, 'rsscloud');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the notice was locally created
|
||||
*
|
||||
* @param Notice $notice the notice in question
|
||||
*
|
||||
* @return boolean locality
|
||||
*/
|
||||
|
||||
function _isLocal($notice)
|
||||
{
|
||||
return ($notice->is_local == Notice::LOCAL_PUBLIC ||
|
||||
$notice->is_local == Notice::LOCAL_NONPUBLIC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the rsscloud_subscription table if it's not
|
||||
* already in the DB
|
||||
|
|
|
@ -221,7 +221,7 @@ class TwitterBridgePlugin extends Plugin
|
|||
*/
|
||||
function onStartEnqueueNotice($notice, &$transports)
|
||||
{
|
||||
if (self::hasKeys()) {
|
||||
if (self::hasKeys() && $notice->isLocal()) {
|
||||
// Avoid a possible loop
|
||||
if ($notice->source != 'twitter') {
|
||||
array_push($transports, 'twitter');
|
||||
|
|
Loading…
Reference in New Issue
Block a user